【问题标题】:Unable to convert string to JSON object无法将字符串转换为 JSON 对象
【发布时间】:2016-11-08 12:53:29
【问题描述】:

下面是Json字符串

{
  "Resources": {
    "Resource": [
      {
        "ResourceId": "D513E96F-EA6C-E511-8133-000D3A0044F4",
        "MSPSLogin": "richa.dinesh.parkar",
        "Email": "richa.dinesh.parkar@accenture.com"
      },
      {
        "ResourceId": "D513E96F-EA6C-E511-8133-000D3A0044F4",
        "MSPSLogin": "harshal.arun.vadnere",
        "Email ": "harshal.arun.vadnere@accenture.com"
      }
    ]
  },
    "CreatedOn":"2016-07-18T12:51:14.23Z",                         
    "CreatedByApp":"AD"                           
}

我的模型课:

public class Resource   
{
    public string ResourceId { get; set; }
    public string MSPSLogin { get; set; }
    public string Email { get; set; }

}

public class Resources
{
    public IList<Resource> Resource { get; set; }
}

public class Example
{
    public Resources Resources { get; set; }
    public DateTime CreatedOn { get; set; }
    public string CreatedByApp { get; set; }
}

我使用Json.Net,我想将下面的字符串转换为Json Object。

Example example = JsonConvert.DeserializeObject<Example>(jsonstr);

但它错误:

Newtonsoft.Json.dll 中出现“Newtonsoft.Json.JsonSerializationException”类型的未处理异常

附加信息:无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[myWizard_MSPS_integration.Example]',因为该类型需要 JSON 数组(例如 [1,2,3]) 以正确反序列化。

【问题讨论】:

标签: c# json json.net


【解决方案1】:

尝试将IList&lt;Resource&gt;改为IEnumerable&lt;Resource&gt;Resource[],我认为Json.Net无法初始化IList。不支持的功能。

【讨论】:

    【解决方案2】:

    只需将Resources属性的类型更改为IEnumerable&lt;Resource&gt;

    【讨论】:

      【解决方案3】:

      试试这个类模型:

      public class Resource
      {
          public string ResourceId { get; set; }
          public string MSPSLogin { get; set; }
          public string Email { get; set; }
      }
      
      public class Resources
      {
          public List<Resource> Resource { get; set; }
      }
      
      public class Example
      {
          public Resources Resources { get; set; }
          public string CreatedOn { get; set; }
          public string CreatedByApp { get; set; }
      }
      

      替换

          public IList<Resource> Resource { get; set; }
      

          public List<Resource> Resource { get; set; }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-28
        • 2021-08-01
        • 2022-12-09
        相关资源
        最近更新 更多