-1

我正在尝试将以下 JSON 反序列化为我的 Win 8 应用程序中的对象:

{
"success":true,
"pharmacies":[
{
"name":"Test Pharmacy",
"phone":null,
"description":"sample description",
"pharmacyid":"1234567",
"pic":"/1341864197.png",
"address":"211 Warren St., #205",
"city":"Newark",
"state":"NJ",
"zipcode":"07103",
"delivery":true,
"dob_check":false,
"name_check":false,
"can_pickup":true,
"barcode_template":"9999999XX"
}
]
}

这是我正在使用的模型:

public class PharmacyList
{
    public List<Pharmacy> pharmacies { get; set; }
}
public class Pharmacy
{
    public string pharmacyid { get; set; }
    public string name { get; set; }
    public string phone { get; set; }


}

这是我用来反序列化的代码

json = await results.Content.ReadAsStringAsync();
List<PharmacyList> p = JsonConvert.DeserializeObject<List<PharmacyList>>(json);

我收到以下异常:

: 无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[PharmacyHC.Models.PharmacyList]' 因为该类型需要 JSON 数组(例如 [1 ,2,3]) 以正确反序列化。

我是在尝试反序列化为错误的类型,还是应该在 JSON 以不同方式从 API 返回时对其进行格式化?

4

1 回答 1

0

我才意识到我犯的愚蠢错误。p 应该被声明为 PharmacyList 类型而不是列表对象,因为 PharmacyList 的类声明已经包含一个 List 对象。

List<PharmacyList> p = JsonConvert.DeserializeObject<List<PharmacyList>>(json);

应该是

PharmacyList p = JsonConvert.DeserializeObject<PharmacyList>(json);
于 2013-03-04T03:08:05.350 回答