无法使用Dictionary对json对象进行反序列化

时间:2018-01-06 18:26:59

标签: c# json dictionary json.net

我需要将简单的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"]);

当然我可以用课程解决这个问题,但是我无法使用它。

2 个答案:

答案 0 :(得分:2)

您正在尝试将数组反序列化为字符串,因此无法正常工作。请尝试使用DeserializeObject<Dictionary<string, object>>

答案 1 :(得分: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);

如果您希望继续使用字典,则应该像[{1}}一样反序列化,因为Dictionary<string, object>密钥不包含extend;

string