Visual C# 4.0의 백엔드로 /에서 JSON을 게시하고 가져 오는 응용 프로그램을 작성하고 있습니다.JavaScriptSerializer가 deserialization에서 ArgumentNullException을 throw합니다.
분명히, JSON을 serialize/deserialize하는 가장 쉬운 방법은 System.Web.Script.Serialization.JavaScriptSerializer이지만, ArgumentNullException을 던지는 곳에 이상한 오류가 발생하여 해당 유형이 null이라고 주장합니다. 다음 JSON가 역 직렬화
는 잘 작동 (중첩 사전)와 두번째 역 직렬화 때 종류가 null 오류가 함께
{"results":[
{"Name":"Western Bulldogs",
"updatedAt":"2011-08-22T09:09:09.673Z",
"Nickname":"Bulldogs",
"RemoteId":44,
"Abbreviation":"WB",
"createdAt":"2011-08-22T09:09:09.673Z",
"objectId":"2iSK8FDTA6"}
]}
그러나, 실패. 원래 JSON 객체 때문에 모든 속성을 구현하지 않습니다 - 다음과 같이 ObjectIdContainerList가
JavaScriptSerializer jsSerialise = new JavaScriptSerializer();
ObjectIdContainerList contList = jsSerialise.Deserialize<ObjectIdContainerList>(responseString);
은 (참고 : 참고로
{"results":[
{"EndDate":{"iso":"2011-09-06T00:00:00.000Z","__type":"Date"},
"Name":"Round 24",
"updatedAt":"2011-08-22T08:33:54.119Z",
"RemoteId":800,"createdAt":"2011-08-22T08:33:54.119Z",
"Season":{"className":"Season","__type":"Pointer","objectId":"WnsdqIlrd6"},
"Order":24,
"StartDate":{"iso":"2011-08-30T00:00:00.000Z","__type":"Date"},
"objectId":"bLdBfhagi9"}
]}
, 나는 두 쿼리에 대한 다음과 같은 방법으로 직렬화 복원 해요 I)는 OBJECTID 속성을 얻기에만 관심이 :
[Serializable]
public class ObjectIdContainerList
{
public ObjectIdContainer[] results { get; set; }
}
[Serializable]
public class ObjectIdContainer
{
public String objectId { get; set; }
}
첫 번째 쿼리는 정확히 동일한 코드 및 객체와 문제없이 deserialises.
제안 사항? JSON.NET으로가는 것이 가장 좋을까요?
ObjectIdContainerList를 먼저 게시하고 가능한 경우 json 데이터를 누락하지 않고 게시하여 실제로 진행되고있는 작업을 볼 수 있습니다. –