无法将字符串转换为JSON对象

时间:2016-11-08 12:53:30

标签: c# json json.net

下面是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);

但是错误:

  

类型&#39; Newtonsoft.Json.JsonSerializationException的未处理异常&#39;发生在Newtonsoft.Json.dll

     

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

只需将Resources属性的类型更改为IEnumerable<Resource>

即可

答案 2 :(得分:0)

尝试使用此类模型:

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; }