从Json Http响应反序列化对象列表
本文关键字:对象 列表 反序列化 响应 Json Http | 更新日期: 2023-09-27 18:09:38
JSON响应如下:
{
"Adddress": [
{
"Country": "United States",
"City": "Irmo",
"Line1": "103 Kinley Rd",
"Line2": null,
"PostalCode": "20063",
"State": "SC",
"AddressCode": "BILL-01"
},
{
"Country": "United States",
"City": "Irmo",
"Line1": "1098 Kanley Road",
"Line2": "Building B",
"PostalCode": "29063",
"State": "SC",
"AddressCode": "SHIP-01"
}]
}
َAnd这是我的地址类:
[JsonObject()]
public class Address
{
public string AddressCode { get; set; }
public string Line1 { get; set; }
public string Line2 { get; set; }
public string Country { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
public string City { get; set; }
}
我有这个c#代码来反序列化这个http响应到我的对象列表:
HttpResponseMessage response = client.GetAsync(urlParameters).Result; // Blocking call!
if (response.IsSuccessStatusCode)
{
var dataObjects = response.Content.ReadAsAsync<Adddress>().Result;//JsonConvert.DeserializeObject<List<RestResponse>>(response.Content.ReadAsStringAsync().Result);//
foreach (var d in dataObjects)
{
Console.WriteLine("{0}", d.Country);
}
}
但是我得到这个错误:
附加信息:无法将当前JSON对象(例如{"name":"value"})反序列化为类型'System.Collections.Generic.IEnumerable ' 1[testest . js]。因为该类型需要一个JSON数组(例如[1,2,3])来正确反序列化。
要修复此错误,请将JSON更改为JSON数组(例如:[1,2,3])或更改反序列化类型,使其成为普通的。net类型(例如,不是整数这样的基本类型,也不是集合类型)如数组或列表),可以从JSON对象反序列化。还可以将JsonObjectAttribute添加到类型中以强制它从JSON对象反序列化。
路径'RestResponse',第2行,位置19。
我该怎么做才能使我的反序列化工作呢?
Adddress
是单一的,你得到的json是一个地址数组(所以不止一个),你必须将其反序列化为例如AddressList
包含多个地址
string json = "{'"Adddress'":[{'"Country'":'"United States'",'"City'":'"Irmo'",'"Line1'":'"103 Kinley Rd'",'"Line2'":null,'"PostalCode'":'"20063'",'"State'":'"SC'",'"AddressCode'":'"BILL - 01'"},{'"Country'":'"United States'",'"City'":'"Irmo'",'"Line1'":'"1098 Kanley Road'",'"Line2'":'"Building B'",'"PostalCode'":'"29063'",'"State'":'"SC'",'"AddressCode'":'"SHIP - 01'"}]}";
var dataObjects = JsonConvert.DeserializeObject<AddressList>(json);
foreach (var d in dataObjects.Adddress)
{
Console.WriteLine("{0}", d.Country);
}
类:
public class Adddress
{
[JsonProperty("Country")]
public string Country { get; set; }
[JsonProperty("City")]
public string City { get; set; }
[JsonProperty("Line1")]
public string Line1 { get; set; }
[JsonProperty("Line2")]
public string Line2 { get; set; }
[JsonProperty("PostalCode")]
public string PostalCode { get; set; }
[JsonProperty("State")]
public string State { get; set; }
[JsonProperty("AddressCode")]
public string AddressCode { get; set; }
}
public class AddressList
{
[JsonProperty("Adddress")]
public IList<Adddress> Adddress { get; set; }
}