如何使用 JavaScriptSerializer 解析具有许多嵌套的 json 数组
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""]
}]}";
您的json文本无效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;
添加此命名空间
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();
现在我的 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""]
}]}";
您的json文本无效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;
添加此命名空间
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();