我如何反序列化这样的数组?

时间:2015-01-16 14:56:37

标签: c# json deserialization

我似乎无法弄清楚如何将c#中的特定数组(从字符串!)反序列化为类

  [
    [
      "PrimaryContact", 
      "=", 
      "Amy R"
    ], 
    "and", 
    [
      "SecondaryContact", 
      "=", 
      "Steven G"
    ],
    "and",
    [
      "ThirdContact",
      "=",
      "Rachel S"
    ]
  ]

具体来说,它是投掷我的中间部分,在这种情况下它是"和"。它不总是只有三个物体,可以有无限量的物体,有一个"和"在他们每个人之间。

2 个答案:

答案 0 :(得分:2)

您可以将其反序列化为对象列表:

List<object> items = new JavaScriptSerializer().Deserialize<List<object>>(json);

现在每个其他对象都是Object[](包含String的对象),String之间的对象。

答案 1 :(得分:1)

使用Json.NET,将所有内容解析为JArray,然后在偶数索引处过滤掉令牌,然后将每个转换为List<string>

您最终会得到List<string>的集合,其中每个列表包含3个元素,例如"PrimaryContact""=""Amy R"

var array = JArray.Parse(json);

IEnumerable<List<string>> result = array.Where((token, index) => index%2 == 0)
                                        .Select(token => token.ToObject<List<string>>());

这对我使用你的输入