繁体   English   中英

无法使用字典反序列化json对象

[英]Can't deserialize json object with Dictionary

我需要将简单的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<Dictionary<string, object>>

我建议您使用已知对象对它进行反序列化。

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<string, object>一样反序列化,因为extend键不包含string ;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM