我不是C#程序员,而是不时使用该语言。我想知道,如果我有一个JSON字符串,我想使用JavaScriptSerializer.DeserializeObject反序列化,我怎么能这样做。例如,如果我有一个JSON:
{
"Name": "col_name2",
"Value": [
{
"From": 100,
"To": 200
},
{
"From": 100,
"To": 200
}
]
}
我在名为sJson
的变量中有JSON字符串:
using System.Web.Script.Serialization;
...
JavaScriptSerializer jss = new JavaScriptSerializer();
Object json = jss.DeserializeObject(sJson);
现在我该如何使用这个Object json
变量?
注意:我已经知道如何使用System.Web.Script.Serialization.Deserialize<T>
方法。
答案 0 :(得分:3)
请看这篇关于戴维斯答案的文章:
Deserialize json object into dynamic object using Json.net
你可以将它放入动态(底层类型是JObject) 然后你可以访问这样的信息:
JavaScriptSerializer jss = new JavaScriptSerializer();
dynamic json = jss.DeserializeObject(sJson);
Console.WriteLine(json["Name"]); // use as Dictionary
我更希望创建一个数据传输对象(DTO)将您的JSON结构表示为c#类。
答案 1 :(得分:1)
您可以为此特定情况声明新的自定义类:
public class CustomClass
{
public string Name { get; set; }
public List<ValueClass> Value { get; set; }
}
public class ValueClass
{
public int From { get; set; }
public int To { get; set; }
}
然后直接反序列化到这些类(反序列化器将自动映射正确的属性):
JavaScriptSerializer jss = new JavaScriptSerializer();
CustomClass json = (CustomClass)jss.Deserialize(sJson, typeof(CustomClass));
此外,如果您有多个项目,这也很容易:
List<CustomClass> json = (List<CustomClass>)jss.Deserialize(sJson, typeof(List<CustomClass>));