web-dev-qa-db-fra.com

Convertir JSON en tableau C #?

Est-ce que quelqu'un sait comment convertir une chaîne contenant JSON en un tableau C #? J'ai ceci qui lit le texte/json à partir d'un navigateur Web et le stocke dans une chaîne.

string docText = webBrowser1.Document.Body.InnerText;

Juste besoin de changer en quelque sorte cette chaîne JSON en un tableau. Je suis en train de regarder Json.NET mais je ne sais pas si c'est ce dont j'ai besoin, car je ne veux pas changer un tableau en json; mais l'inverse. Merci pour l'aide!

30
Joey Morani

prenez simplement la chaîne et utilisez JavaScriptSerializer pour la désérialiser en un objet natif. Par exemple, ayant ce json:

string json = "[{Name:'John Simith',Age:35},{Name:'Pablo Perez',Age:34}]"; 

Vous devez créer une classe C # appelée, par exemple, Person définie comme suit:

public class Person
{
 public int Age {get;set;}
 public string Name {get;set;}
}

Vous pouvez maintenant désérialiser la chaîne JSON dans un tableau de Person en procédant comme suit:

JavaScriptSerializer js = new JavaScriptSerializer();
Person [] persons =  js.Deserialize<Person[]>(json);

Voici un lien vers la documentation JavaScriptSerializer .

Note: mon code ci-dessus n'a pas été testé mais c'est l'idée Testé il. À moins que vous ne fassiez quelque chose d '"exotique", vous devriez pouvoir utiliser le JavascriptSerializer.

54
Icarus

Oui, Json.Net est ce dont vous avez besoin. Vous voulez essentiellement désérialiser une chaîne Json dans un tableau de objects.

Voir leurs exemples :

string myJsonString = @"{
  "Name": "Apple",
  "Expiry": "\/Date(1230375600000+1300)\/",
  "Price": 3.99,
  "Sizes": [
    "Small",
    "Medium",
    "Large"
  ]
}";

// Deserializes the string into a Product object
Product myProduct = JsonConvert.DeserializeObject<Product>(myJsonString);
6
ken2k
using Newtonsoft.Json;

Installer cette classe dans la console du package Cette classe fonctionne correctement dans toutes les versions .NET, par exemple dans mon projet: DNX 4.5.1 et DNX CORE 5.0 et tout fonctionne.

Tout d'abord, avant la désérialisation JSON, vous devez déclarer une classe à lire normalement et stocker des données quelque part. C'est ma classe:

public class ToDoItem
{
    public string text { get; set; }
    public string complete { get; set; }
    public string delete { get; set; }
    public string username { get; set; }
    public string user_password { get; set; }
    public string eventID { get; set; }
}

Dans la section HttpContent où vous demandez des données par requête GET, par exemple:

HttpContent content = response.Content;
string mycontent = await content.ReadAsStringAsync();
//deserialization in items
ToDoItem[] items = JsonConvert.DeserializeObject<ToDoItem[]>(mycontent);
4
Jevgenij Kononov