无法将 JSON 数组(例如 [1,2,3])反序列化为类型“ ”,因为该类型需要 JSON 对象(例如 {"name":"value"})才能正确反序列化

2023-12-04

我有这个 JSON:

[
    {
        "Attributes": [
            {
                "Key": "Name",
                "Value": {
                    "Value": "Acc 1",
                    "Values": [
                        "Acc 1"
                    ]
                }
            },
            {
                "Key": "Id",
                "Value": {
                    "Value": "1",
                    "Values": [
                        "1"
                    ]
                }
            }
        ],
        "Name": "account",
        "Id": "1"
    },
    {
        "Attributes": [
            {
                "Key": "Name",
                "Value": {
                    "Value": "Acc 2",
                    "Values": [
                        "Acc 2"
                    ]
                }
            },
            {
                "Key": "Id",
                "Value": {
                    "Value": "2",
                    "Values": [
                        "2"
                    ]
                }
            }
        ],
        "Name": "account",
        "Id": "2"
    },
    {
        "Attributes": [
            {
                "Key": "Name",
                "Value": {
                    "Value": "Acc 3",
                    "Values": [
                        "Acc 3"
                    ]
                }
            },
            {
                "Key": "Id",
                "Value": {
                    "Value": "3",
                    "Values": [
                        "3"
                    ]
                }
            }
        ],
        "Name": "account",
        "Id": "2"
    }
]

我有这些课程:

public class RetrieveMultipleResponse
{
    public List<Attribute> Attributes { get; set; }
    public string Name { get; set; }
    public string Id { get; set; }
}

public class Value
{
    [JsonProperty("Value")]
    public string value { get; set; }
    public List<string> Values { get; set; }
}

public class Attribute
{
    public string Key { get; set; }
    public Value Value { get; set; }
}

我正在尝试使用下面的代码反序列化上面的 JSON:

var objResponse1 = JsonConvert.DeserializeObject<RetrieveMultipleResponse>(JsonStr);

但我收到此错误:

无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'test.Model.RetrieveMultipleResponse' 因为该类型需要 JSON 对象(例如 {"name":"value"})以正确反序列化。要解决这个问题 错误要么将 JSON 更改为 JSON 对象(例如 {"name":"value"}) 或将反序列化类型更改为数组或实现的类型 一个类似于 List 的集合接口(例如 ICollection、IList),可以 从 JSON 数组反序列化。 JsonArrayAttribute 也可以 添加到类型以强制其从 JSON 数组反序列化。小路 '',第 1 行,位置 1。


您的 json 字符串包含在方括号内 ([]),因此它被解释为数组而不是单个RetrieveMultipleResponse目的。因此,您需要将其反序列化为类型集合RetrieveMultipleResponse, 例如 :

var objResponse1 = 
    JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法将 JSON 数组(例如 [1,2,3])反序列化为类型“ ”,因为该类型需要 JSON 对象(例如 {"name":"value"})才能正确反序列化 的相关文章

随机推荐