【发布时间】:2012-02-16 20:51:21
【问题描述】:
我有一个以这种格式返回 JSON 的外部供应商 API
{"3":{"id":1,"name":"Scott Foo","age":55},
"59":{"id":2,"name":"Jim Morris","age":62}}
我正在尝试使用以下代码对其进行反序列化
[DataContract]
public class Name
{
[DataMember]
public int id { get; set; }
[DataMember]
public string name { get; set; }
[DataMember]
public int age{ get; set; }
}
要反序列化的代码是
List<Name> nameList = Deserialize<List<Name>>(temp);
反序列化定义为
public static T Deserialize<T>(string json)
{
T obj = Activator.CreateInstance<T>();
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
obj = (T)serializer.ReadObject(ms);
ms.Close();
ms.Dispose();
return obj;
}
nameList 中返回的对象计数为零。知道如何在 .Net 中反序列化此 JSON(即不使用 Json.Net 或任何此类第三方 dll)吗?
【问题讨论】:
-
你想要的 id、name 和 age 属性前面的“3”和“59”是怎么回事?
-
更可能是
Deserialize<Dictionary<string, Name>>- 因为这不是一个列表/JSON 数组,它是一个 JSON 对象,具有两个名为“3”和“59”的属性。 -
“3”和“59”是我认为从第三方返回的某种行 ID
标签: c# .net json deserialization