2015-07-28 2 views
5

Ho problemi a ricevere dati dal mio JArray, in particolare sto tentando di accedere al valore dell'ID. Ecco un esempio JSONCome ottenere valori da un JArray in JSON.net

{ 
"page": 1, 
"totalPages": 5, 
"pageSize": 2, 
"sortField": "label", 
"sortOrder": "asc", 
"content": [ 
    { 
    "organizationId": "Org123", 
    "id": "333", 
    "label": "comp1" 
    }, 
    { 
    "organizationId": "Org123", 
    "id": "444", 
    "label": "comp2" 
    } 
] 
} 

E qui è quello che ho in C#

 JArray jArray = new JArray(jsonString); 

     foreach (JValue item in jArray) 
     { 
      Console.WriteLine(item["id"]); 
     } 

so che ho bisogno di controllare il JValue per assicurarsi che si tratta di un tipo di ID, ma sono confuso su oggetto tipi assegnati una volta suddivisi in JArray.

+0

http://stackoverflow.com/questions/18638640/json-net-using-selecttoken-to-get-a-value-senza-conoscere-un-elemento-elemento verificate questo – FirebladeDan

+0

potete usare il metodo 'JToken.Parse (string)'. –

risposta

5

Prima di tutto, hai a che fare con un oggetto al livello più alto. Dopo l'analisi l'oggetto, è necessario guardare la matrice content:

var obj = JObject.Parse(json); 

foreach (JObject element in obj["content"]) 
{ 
    Console.WriteLine(element["id"]); 
} 

Ecco un esempio: https://dotnetfiddle.net/DhVZFf

anche (e questo potrebbe essere solo un errore di battitura), il vostro JSON è valido. Specificamente, la virgola separa gli elementi dell'array content sono mal collocati:

{ 
    "organizationId": "Org123", 
    "id": "333", 
    "label": "comp1", // <--- 
} 
{ 
    "organizationId": "Org123", 
    "id": "444", 
    "label": "comp2", 
} 

Tali virgole devono essere tra elementi dell'array:

{ 
    "organizationId": "Org123", 
    "id": "333", 
    "label": "comp1" 
}, // <--- 
{ 
    "organizationId": "Org123", 
    "id": "444", 
    "label": "comp2" 
}