【问题标题】:Deserialize from string to object [closed]从字符串反序列化到对象[关闭]
【发布时间】:2019-02-01 10:42:57
【问题描述】:

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

我收到以下错误消息:

"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 格式:

【问题讨论】:

  • 您如何称呼 Newtonsoft?添加这些行
  • 先尝试创建并序列化对象,看看json文件应该是什么样子,然后你就明白了! :)

标签: c# .net json


【解决方案1】:

您的 JSON 包含 keyssn 而不是 KeyValue 因此字典将不起作用。 你需要像这样创建类:

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

并将 json 反序列化为 SSN 对象的集合。

【讨论】:

    【解决方案2】:

    首先你需要创建类对象来正确反序列化你的json

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

    然后你需要将你的json反序列化为List&lt;SampleClass&gt;,因为你的json是一个数组类型,这意味着它从左方括号[开始,以右方括号]结束,而不是大括号{}

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多