2015-04-27 3 views
3

J'ai chaîne JSON comme ceci:C# Comment analyser les données json sans nom de clé?

{"fields":[{"type":"none","options":["option1","option2","option3"]}]} 

J'utilise jobject pour analyser les données JSON. Je peux analyser des données qui ont un nom, un type, etc. Mais comment puis-je analyser des données qui n'ont pas de nom, comme option1, option2 et option3? Voici mon code:

JObject object = JObject.Parse(jsonString); 
var type = object["fields"][0]["type"].ToString(); 

mais le problème est avec les options.

+1

En aparté, il est utile si vous le pouvez code réel, compilable - vous ne pouvez pas utiliser 'object' comme identifiant. Si vous aviez posté un programme court mais complet démontrant le problème, il aurait été plus facile de vous aider. –

Répondre

6

La valeur de options est juste un tableau de valeurs - comme fields est. Mais chaque valeur qu'il contient est juste une chaîne, plutôt qu'une autre carte de paires clé/valeur.

Vous pouvez utiliser:

string firstOption = (string) jsonObject["fields"][0]["options"][0]; 

Si vous voulez que l'ensemble des options comme List<string>, vous pouvez utiliser:

var options = jsonObject["fields"][0]["options"] 
    .Select(option => (string) option) 
    .ToList(); 
+0

merci pour votre réponse. J'ai essayé ça. Je reçois une exception de référence nulle. – Matthew

+0

@Matthew: Eh bien avec le JSON exact que vous avez donné, le code que j'ai fourni fonctionne très bien. Donc je pense que vous avez une faute de frappe, ou votre JSON ne ressemble pas à ça. –

+0

Merci, votre code fonctionnait bien. J'ai supprimé une autre partie du code, donc j'ai eu une exception à cette ligne. – Matthew

1
string jsonString = @"{""fields"":[{""type"":""none"",""options"":[""option1"",""option2"",""option3""]}]}"; 

var obj = JObject.Parse(jsonString); 
var options = obj["fields"][0]["options"].ToList();