如何使用动态类型获取数组大小

时间:2016-03-10 03:36:26

标签: c# .net json

array deserialize时收到JSON

我可以使用array访问foreach

dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
foreach (dynamic result in  obj.Results.output1.value.Values)
{
}

但我需要size的{​​{1}}来直接访问最后一个元素。

例如

array

我该怎么做?

编辑1

我需要举例obj.Results.output1.value.Values[size-1]

中的"Y"
"Values"

编辑2

如果我打印,我会得到{ "Results": { "output1": { "type": "table", "value": { "ColumnNames": [ "I01", "I02", "I03", "O01", "Scored Probabilities for Class \"0\"", "Scored Probabilities for Class \"1\"", "Scored Probabilities for Class \"2\"", "Scored Labels" ], "Values": [ [ "-0.96624", "0.02918", "-0.44237", null, "3.25456957391002E-12", "0.000107838139228988", "2.76633869589205E-07", "Y" ] ] } } } }

JSON

计数打印Console.WriteLine(obj.Results.output1.value.Values); [ [ "-0.96624", "0.02918", "-0.44237", null, "3.25456957391002E-12", "0.000107838139228988", "2.76633869589205E-07", "Y" ] ]

1

我几乎就在那里,我需要Console.WriteLine(obj.Results.output1.value.Values.Count); 的最后一个元素来访问内部size中的索引。

编辑3

我可以得到最后一个元素:

array

数组大小为:

Console.WriteLine(obj.Results.output1.value.Values[0].Last);

3 个答案:

答案 0 :(得分:3)

JSON显示Results对象,而不是数组或列表。您正在迭代的是属性。这不是一个集合。它将是JObject,公开.Last

See here for more information

你只需要写:

dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
var lastProperty = obj.Last;

可能有助于转换为JObject(或Dictionary<string, object>以帮助解决未来的问题。

JObject obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);

访问Values

dynamic thing = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
var t = thing.Results.output1.value.Values.Count;

答案 1 :(得分:0)

int[] foo = new int[10];
int n = foo.Length;

你可以使用(arrayname.lenth)来获得数组大小.try it。

答案 2 :(得分:0)

以下是样本,我可以得到100的结果。

ICollection collection = new int[100];
dynamic obj = collection;
Console.WriteLine(obj.Length);