我有这个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
您的json字符串包装在方括号([])中,因此将其解释为数组而不是单个RetrieveMultipleResponse对象。因此,您需要将其反序列化以键入的集合RetrieveMultipleResponse,例如:
var objResponse1 = JsonConvert.DeserializeObject<List >(JsonStr);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。