2016-10-20 6 views
0

JSON 문자열은 다음과 같습니다.어떻게 서로 다른 속성 이름으로 맵을 deserialize 할 수 있습니까

string jsonstring1 = @"{'data':'N'}"; 
string jsonstring2 = @"{'data':[{'name':'jack','address':'la'}]}"; 
string jsonstring3 = @"{'data':{'flag':true}}"; 

세 개의 JSON 문자열에서 사용할 수있는 클래스를 정의하는 방법을 객체에 대해 deserialize 하시겠습니까?

+0

[LINQ to JSON] (http://www.newtonsoft.com/json/help/html/LINQtoJSON.htm)을 사용 하시겠습니까? – dbc

답변

0

이 세 가지가 가능한 유일한 JSON 문자열이라면 세 개의 루트 클래스를 만들어야합니다. 일부 tools을 사용하거나 단순히 각 JSON 문자열을 복사 한 다음 편집> 선택하여 붙여 넣기> Visual Studio에서 JSON 클래스로 붙여 넣기로 붙여 넣기 만하면됩니다. 예를 들어 jsonstring2에 해당하는 클래스는 다음과 같이 표시됩니다

public class Rootobject 
{ 
    public Person[] data { get; set; } 
} 

public class Person 
{ 
    public string name { get; set; } 
    public string address { get; set; } 
} 

그런 다음 당신은 다음과 같은 "데이터"의 종류를 감지해야합니다

JObject jo = JObject.Parse(jsonstring2); 
string type = jo["data"].GetType().Name; 

될 것이다이 경우 어떤는 jarray (다른 2 개는 JValue와 JObject이다). 그런 다음 switch 문을 사용하여 문자열을 올바른 클래스로 역 직렬화 할 수 있습니다.

관련 문제