Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化不带根的JSON数组。如何读取数组值?_C#_Json_Json.net_Json Deserialization - Fatal编程技术网

C# 反序列化不带根的JSON数组。如何读取数组值?

C# 反序列化不带根的JSON数组。如何读取数组值?,c#,json,json.net,json-deserialization,C#,Json,Json.net,Json Deserialization,我正在尝试使用Newtonsoft反序列化数组,以便显示值列表,但无论我如何尝试,都会出现此错误:引发异常:“System.NullReferenceException” 这是我的JSON: [ { "M": { "ItemNo": { "S": "111803" }, "Name": { "S":

我正在尝试使用Newtonsoft反序列化数组,以便显示值列表,但无论我如何尝试,都会出现此错误:
引发异常:“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