2017-03-28 1 views
0

저는 JSON과 Newtonsoft를 함께 사용하는 데 상당히 익숙하며 JArray()를 사용하지 않고이 형식을 복제하려고합니다. 누구에게 이것이 달성 될 수 있는지에 대한 아이디어가 있습니까? 다음과 같이 수동 JArray 생성을 사용C#을 사용하는 Newtonsoft의 JSON 배열

"attrList":[ 
     { 
     "name":"Attendee Status", 
     "val":"Accepted" 
     }, 
     { 
     "name":"Attendee Type", 
     "val":"Attendee" 
     } 
    ] 
+0

계속 오류가 계속 발생하는 것은 동일한 키입니다. –

+1

지금까지 해보신 것은 무엇입니까? –

답변

1

, 당신이 그것을 할 수 있습니다

var root = new JObject 
(
    new JProperty("attrList", 
     new JArray 
     (
      new JObject 
      (
       new JProperty("name", "Attendee Status"), 
       new JProperty("val", "Accepted") 
      ),     
      new JObject 
      (
       new JProperty("name", "Attendee Type"), 
       new JProperty("val", "Attendee") 
      ) 
     ) 
    ) 
); 

당신은 당신이 아마 그래서 내가으로 실행 계속 오류가 같은되는 키입니다 을 썼다 대신 다음과 같이하십시오.

var root = new JObject 
(
    new JProperty("attrList", 
     new JArray 
     (
      new JObject 
      (
       new JProperty("name", "Attendee Status"), 
       new JProperty("val", "Accepted"), 
       new JProperty("name", "Attendee Type"), 
       new JProperty("val", "Attendee") 
      ) 
     ) 
    ) 
); 

Notic 두 개의 객체가 아니라 하나의 객체 만 생성되고 있는가? 두 객체를 모두 할당하는 것을 잊어 버리면 "name""val" 속성을 두 번 추가하려고하면 결국 문제가 재현됩니다.

샘플 fiddle.

Creating JSON: Manually Creating JSON도 참조하십시오.

+0

감사합니다. 나는 JObject를 사용할 수 있다는 것을 몰랐다. –

0
public class Parent 
{ 
    public List<Attribute> attrList{ get; set; } 
} 

public class Attribute 
{ 
    public string name{ get; set; } 
    public string val{ get; set; } 
} 

var parsedParent = JsonConvert.DeserializeObject<Parent>(
    "{ 'attrList':[ { 'name':'Attendee Status', 'val':'Accepted' }, { 'name':'Attendee Type', 'val':'Attendee' } ] }" 
);