2017-03-21 5 views
-6

Wie kann ich einzelne Werte von diesem JSON erhalten? Zum Beispiel die SSN? Einige Elemente sind Arrays, die ein Vielfaches (Adressen, Telefone) enthalten können. Was ist der beste Weg, dies zu analysieren? Ich habe versucht, mit JArray.Parse (Daten), aber immer noch nicht die einzelnen Elemente "finden". Kann mir jemand in die richtige Richtung zeigen?Werte von verschachtelten JSON-Arrays abrufen

[{ 
    "firstName": "test", 
    "middleName": "test", 
    "lastName": "test" 
}, 
{ 
    "addresses": 
    [{ 
     "street": "test", 
     "city": "test", 
     "state": "test", 
     "zip": "test" 
    }] 
}, 
{ 
    "DOB": "" 
}, 
{ 
    "SSN": "123123123" 
}, 
{ 
    "occupation": "test", 
    "typeOfOccupation": "test" 
}, 
{ 
    "phones": 
    [{ 
     "phone": "", 
     "type": "" 
    }] 
}, 
{ 
    "Email": "" 
}, 
{ 
    "typeOfId": "", 
    "idNumber": "", 
    "expirationDate": "" 
}] 
+5

Zeigen Sie Ihren tatsächlichen Code. Das Analysieren von JSON in C# ist ein Thema, das wiederholt und umfassend behandelt wird. – tnw

+0

Dies könnte hilfreich sein. http://stackoverflow.com/questions/16079116/getting-data-from-a-deeply-nested-json-object – SWPhantom

Antwort

0

Sie sagten, Sie JArray.Parse verwendet, aber Sie es als dynamic verwenden? Check Query JSON with dynamic mit JSON.Net.

var json = "[{ \"firstName\": \"test\", \"middleName\": \"test\", \"lastName\": \"test\" }, { \"addresses\": [{ \"street\": \"test\", \"city\": \"test\", \"state\": \"test\", \"zip\": \"test\" }] }, { \"DOB\": \"\" }, { \"SSN\": \"123123123\" }, { \"occupation\": \"test\", \"typeOfOccupation\": \"test\" }, { \"phones\": [{ \"phone\": \"\", \"type\": \"\" }] }, { \"Email\": \"\" }, { \"typeOfId\": \"\", \"idNumber\": \"\", \"expirationDate\": \"\" }]"; 
var data = JArray.Parse(json); 
JToken ssn = data.SelectToken("$..SSN") 
if(ssn!=null){ 
    Console.WriteLine(ssn.Value<string>()); 
} 

Arbeiten fiddle here.

+0

Danke Matias. Gibt es eine Möglichkeit, dies zu tun, ohne die Position der Daten zu kennen? Zum Beispiel kann der SSN manchmal vor dem DOB erscheinen (oder es kann andere Änderungen an der Struktur geben). Kann ich die SSN "finden"? – fredjo

+0

Da es ein Array und kein Objekt ist, nein, glaube nicht, dass du es kannst, wenn du nicht das gesamte Array nach dem Attribut suchst, nicht wirklich effizient. –

+0

das scheint zu funktionieren: dynamische arr = JArray.Parse (Daten); JToken ssn = arr.SelectToken ("$ .. SSN"); Siehst du irgendein Problem damit? – fredjo

Verwandte Themen