从字符串反序列化到对象

时间:2019-02-01 10:42:57

标签: c# .net json

我在这个问题上困扰了很长时间,所以我在这里问。

我收到以下错误消息:

"Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'XXX' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly."

这是我班的样子:

public class SSN
{
    public IDictionary<string,string> ssns { get; set; }
}

这是json格式:

enter image description here

2 个答案:

答案 0 :(得分:4)

您的JSON包含密钥 ssn 而不是密钥,因此字典将不起作用。 您需要创建类似以下的类:

generate

然后反序列化json以收集SSN对象。

答案 1 :(得分:0)

首先,您需要创建类对象以正确反序列化json,如

class SampleClass
{
    public string ssn { get; set; }
    public string key { get; set; }
}

然后,您需要将json反序列化为List<SampleClass>,因为json是一种数组类型,这意味着它从打开方括号[开始并以闭合方括号]结束而不是卷曲方括号{}

List<SampleClass> sampleClasses = JsonConvert.DeserializeObject<List<SampleClass>>(json_string);

OR

List<SampleClass> sampleClasses = JToken.Parse(json_string).ToObject<List<SampleClass>>();