2015-12-05 21 views
8
[ 
    { 
     "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 
    } 
] 

Ciao, questo è il mio dato Json, ma non posso deserializzare. Voglio controllare solo il valore "stato". (primo oggetto "stato" 0, secondo oggetto "stato" 1).Come deserializzare un array JSON utilizzando Newtonsoft.Json

definizione Esempio:

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; } 
} 

codice di deserializzazione:

var des = (Example)JsonConvert.DeserializeObject(responseString, typeof(Example)); 
Console.WriteLine(des.status[0].ToString()); 
+0

Mostraci il codice che tenta di deserializzare il tuo JSON. –

+0

var des = (Esempio) JsonConvert.DeserializeObject (responseString, typeof (Example)); Console.WriteLine (des.status [0] .ToString()); – Steven

+0

E come viene definito 'Esempio'? –

risposta

13

provare questo codice:

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;} 
} 

e deserializzare si presenta come segue:

var result = JsonConvert.DeserializeObject<List<Receiver>>(responseString); 
var status = result[0].status; 
+0

Grazie mille :) – Steven

+0

[JsonProperty ("receiver_tax_id")] public string receiver_tax_id {get; impostato; } [JsonProperty ("totale")] ..... Ho aggiunto JsonProperty per ogni variabile – Steven

+0

Se si utilizza '[JsonProperty (" receiver_tax_id ")]' è possibile denominare la proprietà come si desidera. '[JsonProperty (" status ")] public int MyOwnStatus {get; impostato; } ' –

0

Si sta tentando di deserializzare una matrice in un oggetto Esempio. Provare a farlo a un elenco, invece:

var des = JsonConvert.DeserializeObject(responseString, typeof(List<Example>)) as List<Example>; 
3

Se vi interessa soltanto il controllo status è possibile utilizzare il tipo di 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 

In questo modo non è nemmeno necessario il Classe Example.

1

Dal codice e dai campionamenti JSON sembra che il problema sia che stai deserializzando un List<Example> anziché un singolo Example.

vorrei fare due cose:

  1. Fai i tuoi convenzioni di denominazione della classe follow .NET, come già li prefisso con le dovute JsonProperty attributi:

    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; } 
    } 
    
  2. deserializzare un List<Example> utilizzando il generico JsonConvert.DeserializeObject<T> sovraccarico invece della versione non generica che si sta utilizzando:

    var des = JsonConvert.DeserializeObject<List<Example>>(responseString); 
    Console.WriteLine(des[0].Status); 
    
Problemi correlati