web-dev-qa-db-fra.com

Analyse d'un tableau JSON à l'aide de Json.Net

Je travaille avec Json.Net pour analyser un tableau. Ce que j'essaie de faire est d'extraire les paires nom/valeur du tableau et de les affecter à des variables spécifiques lors de l'analyse du JObject.

Voici ce que j'ai dans le tableau:

[
  {
    "General": "At this time we do not have any frequent support requests."
  },
  {
    "Support": "For support inquires, please see our support page."
  }
]

Et voici ce que j'ai dans le C #:

WebRequest objRequest = HttpWebRequest.Create(dest);
WebResponse objResponse = objRequest.GetResponse();
using (StreamReader reader = new StreamReader(objResponse.GetResponseStream()))
{
    string json = reader.ReadToEnd();
    JArray a = JArray.Parse(json);

    //Here's where I'm stumped

}

JSON et Json.Net étant relativement nouveaux pour moi, il peut s'agir d'une solution de base pour quelqu'un d'autre. En gros, je dois juste assigner les paires nom/valeur dans une boucle foreach afin de pouvoir sortir les données sur le front-end. Est-ce que quelqu'un a déjà fait ça?

51
johngeek

Vous pouvez obtenir les valeurs de données comme ceci:

string json = @"
[ 
    { ""General"" : ""At this time we do not have any frequent support requests."" },
    { ""Support"" : ""For support inquires, please see our support page."" }
]";

JArray a = JArray.Parse(json);

foreach (JObject o in a.Children<JObject>())
{
    foreach (JProperty p in o.Properties())
    {
        string name = p.Name;
        string value = (string)p.Value;
        Console.WriteLine(name + " -- " + value);
    }
}

Violon: https://dotnetfiddle.net/uox4Vt

115
Brian Rogers

Utilisez Manatee.Json https://github.com/gregsdennis/Manatee.Json/wiki/Usage

Et vous pouvez convertir l'intégralité de l'objet en une chaîne. Le nom du fichier.json devrait se trouver dans le dossier Documents.

        var text = File.ReadAllText("filename.json");
        var json = JsonValue.Parse(text);

        while (JsonValue.Null != null)
        {
            Console.WriteLine(json.ToString());

        }
        Console.ReadLine();
1
SDAL