deserialize - jsonconvert c#
¿Cómo deserializar una matriz JSON utilizando Newtonsoft.Json? (4)
A partir de su código y sampeles JSON, parece que el problema es que en realidad está deserializando una List<Example>
lugar de un solo Example
.
Haría dos cosas:
Haga que su clase siga las convenciones de nombres de .NET, ya que los prefijó con los atributos de
JsonProperty
adecuados: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; } }
Deserialice una
List<Example>
utilizando laJsonConvert.DeserializeObject<T>
genéricaJsonConvert.DeserializeObject<T>
lugar de la versión no genérica que está utilizando actualmente:var des = JsonConvert.DeserializeObject<List<Example>>(responseString); Console.WriteLine(des[0].Status);
[
{
"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
}
]
Hola, estos son mis datos de Json, pero no puedo deserializarlos. Quiero verificar solo el valor de "estado". (primer objeto "estado" 0, segundo objeto "estado" 1).
Definición de ejemplo:
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; }
}
Código de deserialización:
var des = (Example)JsonConvert.DeserializeObject(responseString, typeof(Example));
Console.WriteLine(des.status[0].ToString());
Estás intentando deserializar una matriz en un objeto de Ejemplo. Intenta hacerlo en una lista en su lugar:
var des = JsonConvert.DeserializeObject(responseString, typeof(List<Example>)) as List<Example>;
Prueba este código:
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;}
}
Y deserializar se ve como sigue:
var result = JsonConvert.DeserializeObject<List<Receiver>>(responseString);
var status = result[0].status;
Si solo le interesa verificar el status
, puede usar el tipo dynamic
de .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
De esta manera ni siquiera necesitas la clase Example
.