如何阅读锯齿状数组

时间:2016-03-17 12:24:52

标签: c# arrays

我正在调用一个API,它以字符串格式返回以下数组:

[
  [
    "9200bc80bff0432081d01d103940ffb0",
    "HelloEarth",
    "https://www.google.com",
    "invalid domain",
    "",
    ""
  ],
  [
    "6f269d6627624d61836d1d60b268ff6b",
    "HelloPluto",
    "yahoo",
    "72f988bf86f141af91ab2d7cd011db47",
    "11/30/2015 12:00:00 AM",
    ""
  ],
  [
    "6f269d6627624d61836d1d60b268ff6b",
    "HelloMars",
    "bing",
    "APIClient",
    "11/30/2015 12:00:00 AM",
    ""
  ]
]

我的问题是如何将此字符串转换为数组?如果我只想读取第一个数组的第一个元素,该怎么做?我只附加了简化的字符串,实际上包含3个以上的数组。但每个数组只包含六个元素。

2 个答案:

答案 0 :(得分:1)

我不知道这是否是故意的,但是"字符串格式"是有效的JSON。

您可以使用JSON.Net对其进行反序列化。

    var data = "[[\"9200bc80bff0432081d01d103940ffb0\", \"HelloEarth\", \"https://www.google.com\", \"invalid domain\", \"\", \"\"],[\"6f269d6627624d61836d1d60b268ff6b\", \"HelloPluto\", \"yahoo\", \"72f988bf86f141af91ab2d7cd011db47\", \"11/30/2015 12:00:00 AM\", \"\"],[\"6f269d6627624d61836d1d60b268ff6b\", \"HelloMars\", \"bing\", \"APIClient\", \"11/30/2015 12:00:00 AM\", \"\"]]";
    var array = Newtonsoft.Json.JsonConvert.DeserializeObject<string[][]>(data);

    Console.WriteLine(array[0][0]);

输出:9200bc80bff0432081d01d103940ffb0

https://dotnetfiddle.net/DXi041

答案 1 :(得分:0)

您应该使用Json反序列化器将您的字符串转换为锯齿状数组。 您可以作为常规数组访问您的数组,只需计算它返回的每个位置都包含一个数组,如果您想访问特定位置,则需要再次索引。

var a = jagged[firstIndex]; //returns an array

var obj = a[secondIndex]; //get the object inside the array
相关问题