【问题标题】:Cannot deserialize JSON object (e.g. {"name":"value"}) into type List`1[JiraReporter.search]' type requires a JSON array to deserialize correctly无法将 JSON 对象(例如 {"name":"value"})反序列化为类型 List`1[JiraReporter.search]' 类型需要 JSON 数组才能正确反序列化
【发布时间】:2015-07-17 03:39:10
【问题描述】:

我有如下 JSON:

{
"expand": "names,schema",
"startAt": 0,
"maxResults": 50,
"total": 1,
"issues": [
    {
        "expand": "",
        "id": "10001",
        "self": "http://www.example.com/jira/rest/api/2/issue/10001",
        "key": "HSP-1"
    }
]

对于以上内容,我有如下课程:

[DataContract]
public class Issue
{
    [DataMember(Order = 0)]
    public string expand { get; set; }
    [DataMember(Order = 1)]
    public string id { get; set; }
    [DataMember(Order = 2)]
    public string self { get; set; }
    [DataMember(Order = 3)]
    public string key { get; set; }
}

[DataContract]
public class search
{
    [DataMember(Order = 0)]
    public string expand { get; set; }
    [DataMember(Order = 1)]
    public int startAt { get; set; }
    [DataMember(Order = 2)]
    public int maxResults { get; set; }
    [DataMember(Order = 3)]
    public int total { get; set; }
    [DataMember(Order = 4)]
    public IList<Issue> issues { get; set; }
}

尝试使用以下代码反序列化上述 json:

  return JsonConvert.DeserializeObject<List<search>>(strsearchlist);

但是,我收到如下错误:

无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[JiraReporter.search]' 因为该类型需要一个 JSON 数组(例如 [1,2,3])才能正确反序列化。

要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或将反序列化类型更改为正常的 .NET 类型 例如不是像整数这样的原始类型,不是像数组或列表这样的集合类型)可以从 JSON 对象反序列化。 JsonObjectAttribute 也可以添加到类型中,以强制它从 JSON 对象反序列化。

路径“展开”,第 1 行,位置 10。

这是我的方法返回类型:> //搜索是枚举

我正在使用牛顿 json 库。 我该如何纠正这个问题?

【问题讨论】:

    标签: c# .net arrays json serialization


    【解决方案1】:
    • 你的文字丢失了最后一个}
    • 你的 json 反对 search ,而不是 List&lt;search&gt;

    所以,代码必须如下所示

    var result = JsonConvert.DeserializeObject<search>(strsearchlist);
    return result;
    //return new List<search>(){result};//if you want to return List,you can use this
    

    【讨论】:

    • 非常感谢。没有得到错误。但是,需要检查一下,它对现有场景有多大用处。
    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    相关资源
    最近更新 更多