【问题标题】:Can't deserialize json object with Dictionary无法使用 Dictionary 反序列化 json 对象
【发布时间】:2018-06-16 06:19:08
【问题描述】:

我需要将简单的 json 反序列化为 Dictionary 或类似的东西

json:

{"answer":"ok","hash":"hash123","name":"name123","kills":0,"online":0,"currentTime":"2018-01-06 21:18:30","endDate":"2018-01-06 21:18:30","configUrl":"configUrl123","extend":[]}

我对这个 json 对象的“扩展”数组有疑问。它给了我错误,因为我的字典对于数组是错误的。 如果我删除它一切正常,但我需要保存它。

var json = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
Console.WriteLine(json["answer"]);

当然我可以用类解决这个问题,但我不能使用它。

【问题讨论】:

  • 你的数组不是字符串。您是否尝试过使用对象?例如:.DeserializeObject&lt;Dictionary&lt;string, object&gt;&gt;
  • 谢谢,这项工作就像我需要的那样)我找到了另一种使用动态动态 d = JObject.Parse(data);

标签: c# json dictionary json.net


【解决方案1】:

您正在尝试将数组反序列化为字符串,所以这不起作用。尝试改用DeserializeObject&lt;Dictionary&lt;string, object&gt;&gt;

【讨论】:

    【解决方案2】:

    我建议你用已知对象反序列化它;

    public class JsonObject
    {
        public string answer { get; set; }
        public string hash { get; set; }
        public string name { get; set; }
        public int kills { get; set; }
        public int online { get; set; }
        public string currentTime { get; set; }
        public string endDate { get; set; }
        public string configUrl { get; set; }
        public List<object> extend { get; set; }
    }
    var json = JsonConvert.DeserializeObject<JsonObject>(jsonStr);
    Console.WriteLine(json.answer);
    

    如果你想继续使用字典,你应该像Dictionary&lt;string, object&gt; 这样反序列化,因为extend 键不包含string

    var jsonDictionary = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonStr);
    Console.WriteLine(jsonDictionary["answer"]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-30
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多