[
{
"receiver_tax_id":"1002",
"total":"6949,15",
"receiver_company_name":"Das Company",
"receiver_email":"[email protected]",
"status":0
},
{
"receiver_tax_id":"1001",
"total":"39222,49",
"receiver_company_name":"SAD company",
"receiver_email":"[email protected]",
"status":1
}
]
こんにちは、これは私のJsonデータですが、デシリアライズできません。 「ステータス」値のみを確認したい。 (最初のオブジェクト「ステータス」0、2番目のオブジェクト「ステータス」1)。
定義の例:
public class Example
{
[JsonProperty("receiver_tax_id")]
public string receiver_tax_id { get; set; }
[JsonProperty("total")]
public string total { get; set; }
[JsonProperty("receiver_company_name")]
public string receiver_company_name { get; set; }
[JsonProperty("receiver_email")]
public string receiver_email { get; set; }
[JsonProperty("status")]
public int status { get; set; }
}
逆シリアル化コード:
var des = (Example)JsonConvert.DeserializeObject(responseString, typeof(Example));
Console.WriteLine(des.status[0].ToString());
このコードを試してください:
public class Receiver
{
public string receiver_tax_id { get; set;}
public string total { get; set;}
public string receiver_company_name { get; set;}
public int status { get; set;}
}
そして、デシリアライズは次のようになります。
var result = JsonConvert.DeserializeObject<List<Receiver>>(responseString);
var status = result[0].status;
status
のみを確認する場合は、dynamic
タイプの.NETを使用できます( https://msdn.Microsoft.com/en-us/library/dd264741.aspx )
dynamic deserialized = JObject.Parse(responseString);
int status1 = deserialized[0].status;
int status2 = deserialized[1].status;
//
// do whatever
この方法では、Example
クラスさえ必要ありません。
あなたのコードとJSONサンプルから、問題はあなたが実際に単一のExample
ではなくList<Example>
をデシリアライズしていることのようです。
私は2つのことをします:
適切なJsonProperty
属性のプレフィックスを既に付けているため、クラスを.NET命名規則に準拠させます。
public class Example
{
[JsonProperty("receiver_tax_id")]
public string ReceiverTaxId { get; set; }
[JsonProperty("total")]
public string Total { get; set; }
[JsonProperty("receiver_company_name")]
public string ReceiverCompanyName { get; set; }
[JsonProperty("receiver_email")]
public string ReceiverEmail { get; set; }
[JsonProperty("status")]
public int Status{ get; set; }
}
現在使用している非ジェネリックバージョンではなく、ジェネリックList<Example>
オーバーロードを使用して、JsonConvert.DeserializeObject<T>
を逆シリアル化します。
var des = JsonConvert.DeserializeObject<List<Example>>(responseString);
Console.WriteLine(des[0].Status);
配列をExampleオブジェクトにデシリアライズしようとしています。代わりにリストにそれをやってみてください:
var des = JsonConvert.DeserializeObject(responseString, typeof(List<Example>)) as List<Example>;