簡體   English   中英

C#動態類型Object屬性First始終為null

[英]C# dynamic type Object property First is always null

我正在使用Newtonsoft.Json在C#中創建一個動態對象,並嘗試對其成員進行迭代。

Json布局等於:

[{{"id": "Name"}, {"spec": {More Data}}, {{"id": "Name"}, {"spec": {More Data}}, ...]

當我嘗試以下操作時:

dynamic jsonObj = JsonConvert.DeserializeObject(jsonString);

      foreach (dynamic entry in jsonObj){

            dynamic first = entry.First;
      }

我首先收到一個對象,該對象包含null即使條目具有運行時生成的成員First和Last,它們也不是null (當我在Visual Studio中以調試模式查看它們時)。

可以訪問成員。 使用時:

dynamic first = entry["id"];

我收到正確的值,而不是null 因此內部必須有數據。

是不可能在循環中訪問運行時生成的成員,還是有另一個錯誤?

PS:我知道,我必須調用entry.First.First來訪問"id"的值。 但這也返回null

我的動態對象內容的屏幕截圖:

在此處輸入圖片說明

using Newtonsoft.Json;
using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonString = @"
[
    [   {   item1: { 'id':      'Name'      },
            item2: { 'spec':    'More Data' }
        },
        {   item1: { 'id':      'Name'      },
            item2: { 'spec':    'More Data' }
        }
    ]
]";

            dynamic jsonObj = JsonConvert.DeserializeObject(jsonString);

            foreach (dynamic row in jsonObj)
            {
                Console.WriteLine($"Row\n{row}\n--------------------");
                foreach (var column in row)
                {
                    Console.WriteLine($"Column\n{column}\n--------------------");
                    foreach (var item in column)
                    {
                        Console.WriteLine($"item\n{item}\n--------------------");
                        foreach (var part in item)
                        {
                            Console.WriteLine($"part\n{part}\n--------------------");
                            foreach (var subpart in part)
                            {
                                Console.WriteLine($"subpart\n{subpart}\n--------------------");
                                foreach (var subsubpart in subpart)
                                {
                                    Console.WriteLine($"subsubpart\n{subsubpart}\n--------------------");
                                }
                            }
                        }
                    }
                }
            }

            Console.ReadKey();
        }
    }
}

給出:

Row
[
  {
    "item1": {
      "id": "Name"
    },
    "item2": {
      "spec": "More Data"
    }
  },
  {
    "item1": {
      "id": "Name"
    },
    "item2": {
      "spec": "More Data"
    }
  }
]
--------------------
Column
{
  "item1": {
    "id": "Name"
  },
  "item2": {
    "spec": "More Data"
  }
}
--------------------
item
"item1": {
  "id": "Name"
}
--------------------
part
{
  "id": "Name"
}
--------------------
subpart
"id": "Name"
--------------------
subsubpart
Name
--------------------
item
"item2": {
  "spec": "More Data"
}
--------------------
part
{
  "spec": "More Data"
}
--------------------
subpart
"spec": "More Data"
--------------------
subsubpart
More Data
--------------------
Column
{
  "item1": {
    "id": "Name"
  },
  "item2": {
    "spec": "More Data"
  }
}
--------------------
item
"item1": {
  "id": "Name"
}
--------------------
part
{
  "id": "Name"
}
--------------------
subpart
"id": "Name"
--------------------
subsubpart
Name
--------------------
item
"item2": {
  "spec": "More Data"
}
--------------------
part
{
  "spec": "More Data"
}
--------------------
subpart
"spec": "More Data"
--------------------
subsubpart
More Data
--------------------

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM