开发者社区> 问答> 正文

无法将JSON数组(例如[1,2,3])反序列化为类型'',因为该类型需要JSON对象(例如{“

我有这个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 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 Values { get; set; } }

public class Attribute { public string Key { get; set; } public Value Value { get; set; } } 我正在尝试使用以下代码反序列化上述JSON:

var objResponse1 = JsonConvert.DeserializeObject (JsonStr); 但我收到此错误:

无法将当前JSON数组(例如[1,2,3])反序列化为类型'test.Model.RetrieveMultipleResponse',因为该类型需要JSON对象(例如{“ name”:“ value”})才能正确反序列化。要解决此错误,可以将JSON更改为JSON对象(例如{“ name”:“ value”}),也可以将反序列化类型更改为数组,或者将实现集合接口的类型(例如ICollection,IList)更改为List,例如List从JSON数组反序列化。还可以将JsonArrayAttribute添加到类型中,以强制其从JSON数组反序列化。路径'',第1行,位置1。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 14:02:15 932 0
1 条回答
写回答
取消 提交回答
  • 您的json字符串包装在方括号([])中,因此将其解释为数组而不是单个RetrieveMultipleResponse对象。因此,您需要将其反序列化以键入的集合RetrieveMultipleResponse,例如:

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

    2020-02-08 14:02:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载