[英]How to parse json array with many nesting with JavaScriptSerializer
现在,我的json看起来很简单,并且只有一个对象。 假设json中会有很多对象,那我怎么解析呢。
现在我的json看起来像
var jsonText = @"{
""some_number"": 108.541,
""date_time"": ""2011-04-13T15:34:09Z"",
""serial_number"": ""SN1234"",
""more_data"": {
""field1"": 1.0,
""field2"": ""hello""
}
}";
我正在这样解析
var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<dynamic>(jsonText);
Console.WriteLine(dict["some_number"]);
Console.WriteLine(dict["more_data"]["field2"]);
Console.ReadLine();
当在json数组的每个序数中都有嵌套的对象时,我怎么用JavaScriptSerializer
解析?
假设我的json看起来有点复杂,如下所示,那么我怎么能用JavaScriptSerializer解析它呢?
var jsonText = @"data[
{
""some_number"": 108.541,
""date_time"": ""2011-04-13T15:34:09Z"",
""serial_number"": ""SN1234"",
""more_data"": {
""field1"": 1.0,
""field2"": ""hello""
},
""Hobbies"" : [""game1"",""game2"",""game3""]
},
{
""some_number"": 200.541,
""date_time"": ""2012-04-11T15:34:09Z"",
""serial_number"": ""SN3333"",
""more_data"": {
""field1"": 2.0,
""field2"": ""hello1""
},
""Hobbies"" : [""game4"",""game5"",""game6""]
}]";
var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<dynamic>(jsonText);
Console.WriteLine(dict["some_number"]);
Console.WriteLine(dict["more_data"]["field2"]);
Console.ReadLine();
请告诉我如何使用JavaScriptSerializer解析上述json。 谢谢
根据您的指导更改json。 现在告诉我看起来正确吗?
var jsonText = @"{ ""data""[
{
""some_number"": 108.541,
""date_time"": ""2011-04-13T15:34:09Z"",
""serial_number"": ""SN1234"",
""more_data"": {
""field1"": 1.0,
""field2"": ""hello""
},
""Hobbies"" : [""game1"",""game2"",""game3""]
},
{
""some_number"": 200.541,
""date_time"": ""2012-04-11T15:34:09Z"",
""serial_number"": ""SN3333"",
""more_data"": {
""field1"": 2.0,
""field2"": ""hello1""
},
""Hobbies"" : [""game4"",""game5"",""game6""]
}]}";
您的jsonText不是有效的json。 您可能需要类似:
var jsonText = @"{
""data"":[
{......
使您的json有效,JavaScriptSerializer将正常工作。
编辑
如果我猜对了,那么您的对象必须是
var jsonText = @"{""data"":[
{
""some_number"": 108.541,
""date_time"": ""2011-04-13T15:34:09Z"",
""serial_number"": ""SN1234"",
""more_data"": {
""field1"": 1.0,
""field2"": ""hello""
},
""Hobbies"" : [""game1"",""game2"",""game3""]
},
{
""some_number"": 200.541,
""date_time"": ""2012-04-11T15:34:09Z"",
""serial_number"": ""SN3333"",
""more_data"": {
""field1"": 2.0,
""field2"": ""hello1""
},
""Hobbies"" : [""game4"",""game5"",""game6""]
}]}";
所以现在您可以像访问...那样访问对象
dict["data"] //which is your array containing your two objects
dict["data"][0]["some_number"] //eg first object property
dict["data"][1]["more_data"]["field2"] //second object property...
使用观察面板调试对象。.您应该创建一个模型以将对象转换为模型。 除非需要,否则应避免拥有未知的模型。
我解决问题。 @itdoesntwork提示确实可以帮助我修复json错误。 在这里,我分享我的代码以展示我是如何做到的。
请添加对System.Web.Extensions
引用,并使用System.Web.Script.Serialization;
添加此名称空间System.Web.Script.Serialization;
在顶部
var jsonText = @"{ ""data"":[
{
""some_number"": 108.541,
""date_time"": ""2011-04-13T15:34:09Z"",
""serial_number"": ""SN1234"",
""more_data"": {
""field1"": 1.0,
""field2"": ""hello""
},
""Hobbies"" : [""game1"",""game2"",""game3""]
},
{
""some_number"": 200.541,
""date_time"": ""2012-04-11T15:34:09Z"",
""serial_number"": ""SN3333"",
""more_data"": {
""field1"": 2.0,
""field2"": ""hello1""
},
""Hobbies"" : [""game4"",""game5"",""game6""]
}]}";
var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<dynamic>(jsonText);
Console.WriteLine(dict["data"][0]["some_number"]);
Console.WriteLine(dict["data"][0]["more_data"]["field2"]);
Console.WriteLine(dict["data"][1]["some_number"]);
Console.WriteLine(dict["data"][1]["more_data"]["field2"]);
Console.WriteLine(dict["data"][1]["Hobbies"][1]);
Console.ReadLine();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.