이 JSON 배열 역 직렬화하는 방법 :JSON이 (의사 코드)처럼오고
[{one-off intro object}, [{object},{object},{object}]]
그래서 배열의 첫 번째 것은 내가 관심이 아니에요과 목적은 배열의에게 두 번째는 실제로 deserialize하려는 객체로 가득 찬 다른 배열입니다.
어떻게하면 JSON.NET에서이 작업을 수행 할 수 있습니까?
이 JSON 배열 역 직렬화하는 방법 :JSON이 (의사 코드)처럼오고
[{one-off intro object}, [{object},{object},{object}]]
그래서 배열의 첫 번째 것은 내가 관심이 아니에요과 목적은 배열의에게 두 번째는 실제로 deserialize하려는 객체로 가득 찬 다른 배열입니다.
어떻게하면 JSON.NET에서이 작업을 수행 할 수 있습니까?
Json.Net의 LINQ-to-JSON API을 사용하여 작업을 수행 할 수 있습니다. .
[
{
"blah": "nothing interesting here"
},
[
{
"id": 1,
"name": "foo",
"desc": "description of foo"
},
{
"id": 2,
"name": "bar",
"desc": "blurb about bar"
},
{
"id": 3,
"name": "baz",
"desc": "buzz about baz"
}
]
]
첫째, 관심있는 내부 배열의 항목을 보관하는 클래스를 정의
public class Item
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("desc")]
public string Description { get; set; }
}
:
예를 위해,의 당신의 JSON은 다음과 같습니다 가정하자
이제 JSON을 구문 분석하여 JArray
으로 만든 다음 하위 배열을 가져와 ToObject()
을 사용하여 항목 목록으로 변환하면됩니다.
JArray ja = JArray.Parse(json);
List<Item> list = ja[1].ToObject<List<Item>>();
거기에서 평상시처럼 항목 목록을 사용할 수 있습니다.
정말 고마워요! –
괜찮습니다. 내가 도울 수있어서 기뻐. –
은 당신도 강력한 형식의 캐스팅을 통해 개체의 두 번째 세트를 얻을 수 있습니다 또는 동적으로, 여기에 동적으로 그 일의 예입니다
dynamic jsonArray = JArray.Parse(json);
dynamic targetJsonObjects = jsonArray[1];
디자인 타임에 구조를 알 수없는 상황에서만 동적을 사용해야합니다. – mason
는이 같은 단순한 모델을 시도 해 봤나은?
public class RootObject
{
public object IntroObject { get; set; }
public List<Item> Items { get; set; }
}
public class Item
{
public string WhatEverPropertyYouNeed{ get; set; }
}
JSON의 바깥 부분이 객체가 아닌 배열이므로이 구조체는 실제로 작동하지 않습니다. –
가 읽어 보시기 바랍니다 [질문], (당신이 분명히 표시하는 JSON 유효하지 않습니다으로, ** 검증 **에 중점)는 [mcve]을 제공하고 당신이 시도 것을 공유 할 수 있습니다. – CodeCaster
시도해 보셨습니까? 특정 문제가 있습니까? – Andrei
먼저 유효한 JSON인지 확인하십시오. (힌트, 그렇지 않습니다.) – mason