【发布时间】:2018-02-27 19:01:56
【问题描述】:
我从第三方收到此 JSON,因此无法控制它,
{
code: 200,
message: success,
data: {
categories: {
0: {
prop1: 100,
prop2: blah
},
1: {
prop1: 100,
prop2: blah
}
// etc.. etc.. it may return around 100 or more categories or less
}
}
}
现在我正在尝试将其转换为 C# 对象,
[DataContract]
public class Category
{
[DataMember] public string prop1 { get; set; }
[DataMember] public string prop2 { get; set; }
}
[DataContract]
public class Data
{
[DataMember]
public List<Category> categories { get; set; }
}
[DataContract]
public class RootObject
{
[DataMember]
public int code { get; set; }
[DataMember]
public string message { get; set; }
[DataMember]
public Data data { get; set; }
}
以及转换它的代码,
var response = LoadPageAsync(url).Result;
var serializer = new JavaScriptSerializer();
var rootObject = serializer.Deserialize<RootObject>(response);
问题是我将类别计数归零,即使 JSON 它本身有很多。
【问题讨论】:
-
有什么特别的原因您使用的是 JavascriptSerializer 而不是 Json.NET?
-
@Bejasc 我是序列化新手,但我愿意接受任何更好的解决方案 :)
-
NewtonSoft.Json 几乎是 C# 中序列化的事实标准。
-
显然您使用的是DataContractJSONSerializer 而不是
JavascriptSerializer。 -
json 中的类别不是一个数组,它只是两个对象“0”和“1”,但反序列化器希望您的代码中有一个列表
标签: javascript c# json