두 가지 형식으로 제공되는 JSON이 있습니다. 경우에 따라 location
값은 문자열이며 때로는 객체입니다. 이것JSON 값은 때때로 문자열이고 때로는 객체입니다.
{
"result": [
{
"upon_approval": "Proceed to Next Task",
"location": "",
"expected_start": ""
}
]
}
클래스 정의 :
여기public class Result
{
public string upon_approval { get; set; }
public string location { get; set; }
public string expected_start { get; set; }
}
public class RootObject
{
public List<Result> result { get; set; }
}
번째 형식 JSON이다 이것
{
"result": [
{
"upon_approval": "Proceed to Next Task",
"location": {
"display_value": "Corp-HQR",
"link": "https://satellite.service-now.com/api/now/table/cmn_location/4a2cf91b13f2de00322dd4a76144b090"
},
"expected_start": ""
}
]
}
클래스 정의 :
이 제 1 포맷의 예이며public class Location
{
public string display_value { get; set; }
public string link { get; set; }
}
public class Result
{
public string upon_approval { get; set; }
public Location location { get; set; }
public string expected_start { get; set; }
}
public class RootObject
{
public List<Result> result { get; set; }
}
JSON 형식이 내 클래스와 일치하지 않을 때 오류가 발생하지만 JSON 형식이 변경되어 어떤 클래스를 사용할 지 미리 알 수 없습니다. 그렇다면 이러한 두 개의 JSON 형식을 동적으로 하나의 클래스 집합으로 역 직렬화 할 수 있습니까?
JavaScriptSerializer ser = new JavaScriptSerializer();
ser.MaxJsonLength = 2147483647;
RootObject ro = ser.Deserialize<RootObject>(responseValue);
"result"배열에 둘 다 포함될 수 있습니까? – Eser
@Eser 아니요 나는 그 중 하나의 클래스 정의 만 포함 할 수 있지만 json 응답은 문자열 또는 클래스를가집니다. 그래서 나는 그 문자열 값을 어떻게 무시할 수 있는지 모른다. –
[This (http://stackoverflow.com/questions/22052430/how-to-handle-json-that-returns-both-a-string-and-a-string-array)는 힌트를 줄 수 있습니다. .. – Eser