2015-07-28 16 views
5

Mam problemy z pobieraniem danych z mojego JArray, w szczególności próbuję uzyskać dostęp do wartości identyfikatora. Oto przykład JSONUzyskiwanie wartości z JArray w 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" 
    } 
] 
} 

I tu jest to, co mam w C#

 JArray jArray = new JArray(jsonString); 

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

Wiem, że muszę sprawdzić JValue aby upewnić się, że jest to typ ID, ale jestem zdezorientowany na obiekcie typy przypisane po ich rozbiciu w JArray.

+0

http://stackoverflow.com/questions/18638640/json-net-using-selecttoken-to-get-a-value-without-knowing-an-element-name sprawdź to – FirebladeDan

+0

możesz użyć metody 'JToken.Parse (string)'. –

Odpowiedz

5

Po pierwsze, mamy do czynienia z obiektem na najwyższym poziomie. Po analizowania obiektu, trzeba spojrzeć na tablicy content:

var obj = JObject.Parse(json); 

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

Oto przykład: https://dotnetfiddle.net/DhVZFf

także (a może to być tylko literówka), Twój JSON jest źle sformułowany. W szczególności, przecinek elementy oddzielające w tablicy content są w niewłaściwym miejscu:

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

te przecinki należy pomiędzy elementy tablicy:

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