-1

Win 8 アプリで、次の JSON をオブジェクトに逆シリアル化しようとしています。

{
"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]) 正しく逆シリアル化します。

間違った型に逆シリアル化しようとしていますか、それとも API から別の方法で返される JSON をフォーマットする必要がありますか?

4

1 に答える 1

0

私は自分が犯したばかげた間違いに気づきました。PharmacyList のクラス宣言にはすでに List オブジェクトが含まれていたため、 p は list オブジェクトではなくタイプ PharmacyList として宣言されている必要があります。

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

だったはずです

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