我有这个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”}),也可以将反序列化类型更改为数组,或者将实现集合接口的类型(例如ICollection,IList)更改为List,例如List从JSON数组反序列化。还可以将JsonArrayAttribute添加到类型中,以强制其从JSON数组反序列化。路径’‘,第1行,位置1。
您的json字符串包装在方括号([])中,因此将其解释为数组而不是单个RetrieveMultipleResponse对象。因此,您需要对其反序列化以键入的集合RetrieveMultipleResponse,例如:
[]
RetrieveMultipleResponse
var objResponse1 = JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);