C# 反序列化不带根的JSON数组。如何读取数组值?
我正在尝试使用Newtonsoft反序列化数组,以便显示值列表,但无论我如何尝试,都会出现此错误:C# 反序列化不带根的JSON数组。如何读取数组值?,c#,json,json.net,json-deserialization,C#,Json,Json.net,Json Deserialization,我正在尝试使用Newtonsoft反序列化数组,以便显示值列表,但无论我如何尝试,都会出现此错误:引发异常:“System.NullReferenceException” 这是我的JSON: [ { "M": { "ItemNo": { "S": "111803" }, "Name": { "S":
引发异常:“System.NullReferenceException”
这是我的JSON:
[
{
"M": {
"ItemNo": {
"S": "111803"
},
"Name": {
"S": "Viper HD 10 x 50 RP Bi"
},
"Price": {
"N": "549.99"
},
"Quantity": {
"N": "1"
}
}
},
{
"M": {
"ItemNo": {
"S": "111715"
},
"Name": {
"S": "Cantilever / 2\" Of"
},
"Price": {
"N": "89.99"
},
"Quantity": {
"N": "1"
}
}
}
]
这是我的C#类:
和我的反序列化和显示第一个数组项值但获取空引用错误的代码:
List<M> mItems = JsonConvert.DeserializeObject<List<M>>(itemsJson);
Console.WriteLine("Items Line Count: " + mItems.Count);
Console.WriteLine("Items#: " + mItems[0].ItemNo.S);
Console.WriteLine("ItemsNam: " + mItems[1].ItemName.S);
Console.WriteLine("ItemsPrc: " + mItems[3].Price.N);
List mItems=JsonConvert.DeserializeObject(itemsJson);
Console.WriteLine(“项目行计数:+mItems.Count”);
Console.WriteLine(“Items#::”+mItems[0].ItemNo.S);
Console.WriteLine(“ItemsName:+mItems[1].ItemName.S”);
Console.WriteLine(“ItemsPrc:+mItems[3].Price.N”);
代码中有两个问题:
1-Json应该反序列化为列表
而不是列表
2-
mItems[3]
将给您一个异常,因为集合只包含两个元素
将代码更改为:
List<Items> mItems = JsonConvert.DeserializeObject<List<Items>>(json1);
Console.WriteLine("Items Line Count: " + mItems.Count);
foreach(Items item in mItems)
{
Console.WriteLine($"No :{item.M.ItemNo.S}, Name :{item.M.Name.S}, Price :{item.M.Price.N}, Quantity :{item.M.Quantity.N}");
}
List<Items> mItems = JsonConvert.DeserializeObject<List<Items>>(json1);
Console.WriteLine("Items Line Count: " + mItems.Count);
foreach(Items item in mItems)
{
Console.WriteLine($"No :{item.M.ItemNo.S}, Name :{item.M.Name.S}, Price :{item.M.Price.N}, Quantity :{item.M.Quantity.N}");
}
Items Line Count: 2
No :111803, Name :Viper HD 10 x 50 RP Bi, Price :549.99, Quantity :1
No :111715, Name :Cantilever / 2" Of, Price :89.99, Quantity :1