【发布时间】:2019-11-27 06:33:07
【问题描述】:
我正在使用 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。
我的动态对象的内容截图:
【问题讨论】:
-
Json 中没有可以映射到
First属性的内容。如果您希望动态对象是一个集合,那么 json 需要采用集合格式,并且 json 中的集合格式以[开头并以]结尾 -
@ChetanRanpariya 谢谢,我纠正了这个错误。我也检查了代码中的对象。它被写成Collection。我还添加了动态对象内容的图像。
标签: c# json dynamic json.net enumerable