したがって、Web APIからJsonオブジェクトを取得するにはHttpClient()
を使用します。オブジェクトには、国のすべての州のリストが含まれています。C#複雑なJsonオブジェクトを配列でデシリアライズできない
このコードは、JSONデシリアライズを呼び出します。
rj = JsonConvert.DeserializeObject<RajaOngkirCity>(response);
応答は、このようなものです:
{
"rajaongkir": {
"query": {
"key": "xxxxxxxxxxxxxxxxxxxxx"
},
"status": {
"code": 200,
"description": "OK"
},
"results": [{
"province_id": "1",
"province": "Bali"
},
{
"province_id": "2",
"province": "Bangka Belitung"
},
.....]
}
}
これらは私のクラスである:
public class RajaOngkirState
{
[JsonProperty("rajaongkir")]
public RajaOngkirStateResult RajaOngkir { get; set; }
}
public class RajaOngkirStateResult
{
[JsonProperty("query")]
public RajaOngkirStateQuery StateQuery { get; set; }
[JsonProperty("status")]
public RajaOngkirStateStatus Status { get; set; }
[JsonProperty("results")]
public RajaOngkirStateResults Results { get; set; }
}
public class RajaOngkirStateQuery
{
[JsonProperty("key")]
public string Key { get; set; }
}
public class RajaOngkirStateStatus
{
[JsonProperty("code")]
public int Code { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
}
public class RajaOngkirStateResults
{
public List<RajaOngkirStateList> States { get; set; }
}
public class RajaOngkirStateList
{
[JsonProperty("province_id")]
public int ProvinceId { get; set; }
[JsonProperty("province")]
public string Province { get; set; }
}
rajaongkir.results
が私を引き起こしているようです問題。
- は、私は文字列に
province_id
タイプを変更しようとしましたが、それでもエラー:ここ は私がしようとしているものです。 List<RajaOngkirStateList> States
をに変更しようとしましたが、それでもエラーが発生しました。
エラー私は取得しています:
タイプが必要なため、 'ECommerce.ShippingMethod.RajaOngkir.RajaOngkirStateResults' タイプに現在のJSON配列を(例えば、[1,2,3])デシリアライズすることはできませんJSONオブジェクト(たとえば、{"name": "value"})を使用して、正しくデシリアライズします。 このエラーを修正するには、JSONオブジェクトをJSONオブジェクト(例:{"name": "value"})に変更するか、またはデシリアライズされた型をArrayやListなどのコレクションインターフェイス(ICollection、IListなど)を実装する型に変更します。 JSON配列からデシリアライズできます。 JsonArrayAttributeを型に追加して、強制的にJSON配列から逆シリアル化することもできます。 パス「rajaongkir.results」、行1、位置118
Spot on!なぜ私はそれを見ることができなかったのだろうか。私は改名がうまくいかないことを知っている。ありがとうございました。 –