[英]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.