2014-03-31 2 views
0

일반적으로 C#에 json 클래스를 생성하려면 json2csharp을 사용합니다. 그러나 나는 문제가있다. 내 json은 이와 같이 역동적 인 깊이를 가지고 있습니다동적으로 json에서 C# 클래스를 생성하십시오.

{ 
     "kategori": [ 
      { 
       "id": "1", 
       "namakategori": "Tips & Trick", 
       "parent_id": "0", 
       "children": [ 
        { 
         "id": "348", 
         "namakategori": "Fotografi", 
         "parent_id": "1", 
         "children": [] 
        }, 
        { 
         "id": "370", 
         "namakategori": "Hacking", 
         "parent_id": "1", 
         "children": [] 
        } 
       ] 
      }, 
    { 
       "id": "12", 
       "namakategori": "Aplikasi", 
       "parent_id": "0", 
       "children": [ 
        { 
         "id": "13", 
         "namakategori": "Tools", 
         "parent_id": "12", 
         "children": [ 
            { 
             "id": "14", 
             "namakategori": "Toolsorder", 
             "parent_id": "13", 
             "children":[] 
             }, 
            ] 
          }, 
          ] 
         }, 
      ] 
} 

그렇다면 json 클래스를 어떻게 생성하여 json에 사용할 수 있습니까? 위의 예에서는 3 가지 깊이가 있습니다. 하지만 다른 페이지로 간다면 아마도 4 개 이상의 깊이가있을 것입니다.

+0

이 아닌 하나의 클래스가 충분해야 사용할 것이다 역 직렬화하기 위해? 'class jsonClass {int id {get; 세트; } 문자열 namakategori {get; 세트; } int parent_id {get; 세트; } 목록 children {get; 세트; } jsonClass() {어린이 = 새 목록 (); }}' – Sascha

+0

그 json으로부터 만 자식을 바인딩하고 싶다면 어떻게해야합니까? 또는 부모 json 만 바인딩하려는 경우? 그 클래스에서, 나는 자식과 부모 만 하나의 클래스가 될 수 있고 부모와 자식 데이터 사이의 구별 방법을 찾을 수 없다. – albilaga

+0

L.B. s comment – Sascha

답변

0

당신은 항상 Newtonsoft.Json 예를 들어

, 등등

JObject result = (JObject) JsonConvert.DeserializeObject(yourJsonDataHere); 
var katObject = result.Property("kategori").Value; 

와 ... 사용할 수 있습니다

PS : Newtonsoft.Json는 WP7에 지원하는 경우 확실하지.

1

클래스를 비활성화 할 필요가 없습니다. 이 작업을해야합니다 :

public class Child 
{ 
    public string id { get; set; } 
    public string namakategori { get; set; } 
    public string parent_id { get; set; } 
    public List<Child> children { get; set; } // <-- See this 
} 

public class RootObj 
{ 
    public List<Child> kategori { set; get; } 
} 

내가 Json.Net

var res = JsonConvert.DeserializeObject<RootObj>(json); 
+0

만약 그 json으로부터 아이를 바인딩하고 싶다면? 또는 부모 json 만 바인딩하려는 경우? 그 클래스에서, 나는 자식과 부모가 하나의 클래스가 될 수 밖에 없으며 부모와 자식 데이터 사이의 구별 방법을 찾을 수 없다. 구별이 없으므로 – albilaga

+1

@blueboyz. 모든 어린이는 다른 어린이의 부모입니다. 그것을 * 나무 *라고 생각하십시오. 필수 노드를 찾으려면 * 트리 *를 탐색해야합니다. –

+0

예제 코드는 무엇입니까? 어쩌면 내가 그것을 파싱하는지. 나는 아직도 당신이 의미하는 것을 이해할 수 없다. 내가 부모와 자식을 다르게 묶어서 부모와 자식 형식이 다른 목록 상자 안에 다르게 표시 할 수 있습니다. – albilaga

관련 문제