这是我与Json的第一次合作。 我已经在我的Visual Studio项目中安装了Json.Net并用于反序列化一些简单的字符串,如下所示:
{
"A":"1",
"B":"2",
"C":"3"
}
使用此代码:
JToken token = JObject.Parse("{ "A":"1","B":"2","C":"3"}";
string aValue = token.SelectToken("A");
string aValue = token.SelectToken("B");
string aValue = token.SelectToken("C");
但我不知道如何处理像这样的Json:
{
"LIST":[
{
"A":"value1",
"B":"value1",
"C":"value1"
}
{
"A":"value2",
"B":"value2",
"C":"value2"
}
{
"A":"value3",
"B":"value3",
"C":"value3"
}
],
"D":"value4",
"E":"value5",
"F":"value6"
}
如何获取类型的所有元素以及D,E和F等其他变量?
谢谢
答案 0 :(得分:5)
最简单的方法是创建对象并反序列化为:
public class Parent
{
public Child[] LIST { get; set; }
public string D { get; set; }
public string E { get; set; }
public string F { get; set; }
}
public class Child
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
一旦定义了类,反序列化JSON就像:
var p = JsonConvert.DeserializeObject<Parent>(json);
答案 1 :(得分:0)
@贾斯汀的答案很好,而且效果很好。但是,如果您想继续使用LINQ-to-JSON API样式,那么以下是获取所有信息的方法:
JToken token = JToken.Parse(jsonString);
foreach (JToken t in token["LIST"])
{
Console.WriteLine(t["A"]);
Console.WriteLine(t["B"]);
Console.WriteLine(t["C"]);
}
Console.WriteLine(token["D"]);
Console.WriteLine(token["E"]);
Console.WriteLine(token["F"]);