现在我的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""]
}]}";
答案 0 :(得分:1)
您的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...
使用您的手表面板调试您的对象..您应该创建一个模型将您的对象投射到您的模型中。除非需要,否则应避免使用未知模型。
答案 1 :(得分:0)
我解决了这个问题。 @itdoesntwork提示确实帮我修复了json错误。 在这里,我将分享我的代码以展示我是如何做到的。
请添加System.Web.Extensions
的引用,并使用顶部的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();