反序列化Json - 对象的对象

时间:2015-05-18 21:49:45

标签: c# json json.net deserialization json-deserialization

我有一些JSON发送给我,看起来像这样:

{"MessageCodes": {
      "Code1": "Message 1",
      "Code2": "Message 2",
      "Code3": "Message 3",
      "Code4": "Message 4",
      "Code5": "Message 5",
      "Code6": "Message 6",
}}

这就是说有一个名为MessageCodes的对象,其中包含许多其他对象(Code1Code2等...)。对象名称Code1Code2,...只是示例对象名称。我收到的JSON包含MessaageCodes对象中包含的数百个对象。所有都是名称值对。

我正在使用Newtonsoft的JSON.net反序列化发送给我的JSON。有谁知道如何将上面的JSON反序列化为字典?

2 个答案:

答案 0 :(得分:2)

首先,您的JSON格式不正确。如果它代表一个对象,它应该用外括号包裹:

var json = @"{'MessageCodes': {
  'Code1': 'Message 1',
  'Code2': 'Message 2',
  'Code3': 'Message 3',
  'Code4': 'Message 4',
  'Code5': 'Message 5',
  'Code6': 'Message 6'}}";

var dict = JsonConvert.DeserializeObject<Test>(json);

public class Test
{
    public Dictionary<string, string> MessageCodes { get; set; }
}

答案 1 :(得分:0)

使用Newtonsoft.Json,你可以做下一步:

   var jsonString = @"{'MessageCodes': {'Code1': 'Message 1','Code2': 'Message 2','Code3': 'Message 3'}";
   var dictionary = JsonConvert.DeserializeObject<JObject>(jsonString)
                .GetValue("MessageCodes")
                .ToDictionary(x => x.First.Path, x => x.First.Value<string>());