如何在JSON.NET中使用不固定的名称反序列化json数组

时间:2012-10-03 13:18:14

标签: c# json.net

我有一个关于如何使用不固定名称反序列化json数组的问题,例如我有一个json字符串,如下所示。

[
  {
    "37414": "MP",
    "weight": 1000
  },
  {
    "21253": "Develper",
    "weight": 424
  },
  {
    "66344": "APP",
    "weight": 1158
  },
  {
    "1622": "API",
    "weight": 164
  }
]

我还定义了一个类,如下所示,并希望使用JSON.NET将json字符串反序列化为 UserTag 对象。或者我应该更改类定义。

public class UserTag
{
    // "37414"
    public long Id { get; set; }

    // MP
    public string Name { get; set; }

    // 424
    public long Weight { get; set; }
}

提前致谢!

2 个答案:

答案 0 :(得分:1)

您使用的是正确的json格式吗?

我认为你应该使用:

[
  {
    "Id" :37414,
    "Name" : "MP",
    "Weight": 1000
  },
  {
    "Id" :21253,
    "Name" : "Develper",
    "Weight": 424
  },
  {
    "Id": 66344,
    "Name" : "APP",
    "Weight": 1158
  }
]

它将反序列化为:

public class UserTag
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Weight { get; set; }
}

答案 1 :(得分:0)

var result = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(json);

foreach (var item in result)
{
    foreach (var kv in item)
    {
        Console.WriteLine(kv.Key + ": " + kv.Value);
    }
}