【发布时间】:2015-03-18 09:15:44
【问题描述】:
我得到一个 json 字符串,我正在使用 DynamicJson 库将其转换为动态对象。虽然我得到了一个数组,但我无法得到这个数组的计数/长度属性。
查看下图了解更多信息。
我试过了,Count, Length & length属性。所有这些属性都不可用。如何获取 DynamicJson 数组的计数?
【问题讨论】:
我得到一个 json 字符串,我正在使用 DynamicJson 库将其转换为动态对象。虽然我得到了一个数组,但我无法得到这个数组的计数/长度属性。
查看下图了解更多信息。
我试过了,Count, Length & length属性。所有这些属性都不可用。如何获取 DynamicJson 数组的计数?
【问题讨论】:
虽然我无法获取数组的长度\计数,但我现在使用 foreach 循环来获取数据:
var dynJson = DynamicJson.Parse(result);
var jarr = dynJson.results.docs;
foreach (var item in jarr)
{
var v = item[attribute];
}
【讨论】:
该库似乎支持将至少转换为T[]和List<T>,因此您可以:
var json = DynamicJson.Parse(@"{""foo"": [1, 2, 3] }");
int[] arr = json.foo;
int length = arr.Length;
或
List<int> lst = json.foo;
int length2 = lst.Count;
请注意,您甚至可以转换为 object[] 或 List<object>!
更复杂的例子:
var json = DynamicJson.Parse(@"{""foo"": [{ ""bar"": 5 }, 2, 3] }");
dynamic[] arr = json.foo;
int length = arr.Length;
List<dynamic> lst = json.foo;
int length2 = lst.Count;
int bar1 = (int)json.foo[0].bar;
int bar2 = (int)arr[0].bar;
//int bar3 = (int)lst[0].bar; // doesn't work!
请注意,List<> 处理似乎至少存在一个错误。
【讨论】: