繁体   English   中英

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

[英]How get the array size using dynamic type

当我deserialize我的JSON时,我得到一个array

我可以使用foreach访问array

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

但是我需要获得array size才能直接访问最后一个元素。

例如。

obj.Results.output1.value.Values[size-1]

我怎样才能做到这一点?

编辑1

我需要例如"Values""Y" "Values"

{
  "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"
          ]
        ]
      }
    }
  }
}

编辑2

如果我打印我得到这个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);

我几乎在那里,我需要在内部array通过索引访问size的最后一个元素。

编辑3

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

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

并且数组大小为:

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

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

浏览此处获取更多信息

你只需要写:

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;
int[] foo = new int[10];
int n = foo.Length;

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM