C#으로 일부 json을 비 직렬화하는 데 문제가 있습니다.System.Runtime.Serialization.Json을 사용하여 JSON을 비 직렬화
이것이 내가 전송되고있어 JSON의 조각 (반복 여러 번 있지만, ID/이름이 아닌 다른 아무것도)입니다 가정 :
[
{
"id":0,
"name":"N/A"
},
{
"id":1,
"name":"Annie"
},
{
"id":2,
"name":"Olaf"
}
]
최상위 레벨이 지명되었다, 내가 할 거라고 더이 곳
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(ChampList));
object objResponse = jsonSerializer.ReadObject(response.GetResponseStream());
ChampList jsonResults = objResponse as ChampList;
그러나 경우 : 다음
[DataContract]
public class ChampList
{
[DataMember(Name = "SOMENAME")]
public ElophantChamp[] ElophantChamps { get; set; }
}
[DataContract]
public class ElophantChamp
{
[DataMember(Name = "id")]
public int ID { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
}
와 같은이를 호출하여 직렬화하지 최상위 컨테이너 객체이고 빈 datamember 이름을 가질 수 없습니다. 어떻게해야합니까? DataMember를 익명으로 남겨두면 (즉, 그냥 [DataMember]로 남겨두면) null 값을 얻습니다. 올바르게 파싱하지 못했음을 나타 내기 위해 취할 것입니다.
오류는 발생하지 않으며 응답 스트림에는 예상 한대로 입력됩니다.
내가 주변에서 검색하고 기본적인 추론을 할 수있는 것을 통해, 나는 내가 있어야 할 필요가있는 곳으로부터 멀리 떨어져 있으면 안된다. 그 최고 수준을 다루는 것에 내가 잘못하고있는 것이 있습니다.
예, 완벽합니다. 나는 그것을 시도했지만, (typeof (ElophantChamp [])로 그것을 할 수 있고 typeof (ElophantChamp)를 시도했음을 깨닫지 못했다 (실패했다). – Craton