2013-08-20 5 views
0

는 내가 열 (C의 *)가 어디에서 다음과 같이 내가 JSON을 가질 수 있습니다 예를 들어, 동적 강조했듯이JSON 문자열을 비 직렬화하는 방법은 무엇입니까?

[{"DId":0,"DData":[{"Date":"","C0":{"D":"National","Id":"National"},"C1":{"D":"National","Id":"National"},"C2":{"D":"National","Id":"National"}},{"Date":"1/2/2010","C0":{"D":0.74,"Id":1334337,"Dirty":"False"},"C1":{"D":0.6,"Id":1334597,"Dirty":"False"},"C2":{"D":1,"Id":1334857,"Dirty":"False"}}]}] 

아래와 같이 동적 열이 다음과 같은 JSON 문자열에 대한 모델을 만들려고하고 있어요 I는 .... 두 열

[{"DId":0,"DData":[{"Date":"","C0":{"D":"National","Id":"National"},"C1":{"D":"National","Id":"National"}},{"Date":"1/2/2010","C0":{"D":0.74,"Id":1334337,"Dirty":"False"},"C1":{"D":0.6,"Id":1334597,"Dirty":"False"}}]}] 

C0, C1, C2가 동적이다.

내 JSON 문자열을 역 직렬화하기 위해 제네릭 모델을 작성하려고합니다. 지금은 다음과 같은 모델을 가지고 있습니다.

public class C0 
{ 
    public object D { get; set; } 
    public object Id { get; set; } 
    public string Dirty { get; set; } 
} 

public class C1 
{ 
    public object D { get; set; } 
    public object Id { get; set; } 
    public string Dirty { get; set; } 
} 

public class C2 
{ 
    public object D { get; set; } 
    public object Id { get; set; } 
    public string Dirty { get; set; } 
} 

public class DData 
{ 
    public string Date { get; set; } 
    public C0 C0 { get; set; } 
    public C1 C1 { get; set; } 
    public C2 C2 { get; set; } 
} 

public class Model 
{ 
    public int DId { get; set; } 
    public List<DData> DData { get; set; } 
} 

위에서 언급했듯이 배포 데이터에는 동적 열이있을 수 있습니다. 내가 정말 고마워하는 모든 도움. 고맙습니다.

+3

왜 JSON을 비 직렬화하려고합니까? [Json.Net] (http://james.newtonking.com/projects/json-net.aspx)을 사용하십시오. – gunr2171

+0

기존 JSON 라이브러리 (NewtonSoft)를 사용할 수 있습니다. – Krishna

+0

학교 배정? – Marcus

답변

0

비밀은 가능한 가장 일반적인 형태에서 직렬화 된 JSON을 유지하는 것입니다 :

Dictionary<string, object> theData= new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(jsonString); 

System.Collections.ArrayList dData= (System.Collections.ArrayList)theData["DData"]; 

foreach (Dictionary<string, object> data in dData) 
{ 
string date = (string)data["Date"]; 

Dictionary<string, object> cZeroNode = (Dictionary<string, object>)data["C0"]; 

string d = (string)cZeroNode["D"]; 
string id = (string)cZeroNode["Id"]; 
} 

Deserialize()에 대한 호출은 당신이 마음대로 통과 할 수 Dictionary<string, object>의 트리를 만듭니다.

관련 문제