[c#] Newtonsoft JSON 역 직렬화

내 JSON은 다음과 같습니다.

{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]}

C # 용 Newtonsoft JSON.NET deserialize 라이브러리를 찾았습니다. 다음과 같이 사용하려고했습니다.

object JsonDe = JsonConvert.DeserializeObject(Json);

JsonDe모든 “유형”데이터를 얻기 위해 개체에 액세스하려면 어떻게 해야합니까? 루프로 시도했지만 개체에 열거자가 없기 때문에 작동하지 않습니다.



답변

JSON에있는 필드를 보유하는 클래스를 구현할 수 있습니다.

class MyData
{
    public string t;
    public bool a;
    public object[] data;
    public string[][] type;
}

그런 다음 DeserializeObject의 일반 버전을 사용합니다.

MyData tmp = JsonConvert.DeserializeObject<MyData>(json);
foreach (string typeStr in tmp.type[0])
{
    // Do something with typeStr
}

문서 : JSON 직렬화 및 역 직렬화


답변

훨씬 더 쉬운 솔루션 : 동적 유형 사용

Json.NET 4.0 릴리스 1부터는 기본 동적 지원이 있습니다. 클래스를 선언 할 필요가 없으며 dynamic다음을 사용하십시오 .

dynamic jsonDe = JsonConvert.DeserializeObject(json);

모든 필드를 사용할 수 있습니다.

foreach (string typeStr in jsonDe.Type[0])
{
    // Do something with typeStr
}

string t = jsonDe.t;
bool a = jsonDe.a;
object[] data = jsonDe.data;
string[][] type = jsonDe.Type;

동적 을 사용하면 데이터를 보관하기 위해 특정 클래스를 만들 필요가 없습니다.


답변

당으로 Newtonsoft 문서 당신은 또한이 같은 익명의 객체 직렬화 수 :

var definition = new { Name = "" };

string json1 = @"{'Name':'James'}";
var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition);

Console.WriteLine(customer1.Name);
// James


답변