我在使用 C# 反序列化一些 json 时遇到问题。
假设这是我正在发送的 json 片段(重复多次,但除了 id/name 没有别的):
[
{
"id":0,
"name":"N/A"
},
{
"id":1,
"name":"Annie"
},
{
"id":2,
"name":"Olaf"
}
]
如果顶层被命名,我会做类似的事情
[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; }
}
然后通过调用它来反序列化它:
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;
但是在没有顶级容器对象并且我不能有空白数据成员名称的情况下,我该怎么办?如果我将 DataMember 保留为未命名(即,将其保留为 [DataMember]),我只会得到一个空值,这表明无法正确解析它。
没有错误被抛出,并且 sesponse 流完全符合我的期望。
根据我所能告诉的搜索和基本推理,我应该离我需要去的地方不远。我在处理最高级别时做错了。