7 votes

Analyseur générique JSON dans .NET / WPF ?

J'ai lu de nombreux tutoriels sur la façon de désérialiser un objet JSON en un objet d'un type particulier à l'aide de DataContractJsonSerializer. Cependant, j'aimerais désérialiser mon objet en un dictionnaire composé de chaînes de caractères, de tableaux ou de dictionnaires, comme le fait System.Json avec SilverLight lorsque je dis JsonObject.Parse(myJSONstring).

Existe-t-il un équivalent de System.Json que je puisse utiliser dans mon projet WPF ?

(juste un bref historique : Je récupère des objets JSON qui contiennent beaucoup trop d'informations, et je veux juste en utiliser une petite partie pour remplir un tableau de chaînes).

Cheers

Nik

9voto

Serge Shultz Points 901

Il suffit d'utiliser le JavaScriptSerializer intégré de .NET.

var jss = new JavaScriptSerializer();
var data = jss.Deserialize<dynamic>(jsonString);

//"data" actually implements IDictionary<string, object>
var p1 = data["Property1"];
var p2 = data["Property2"];

N'oubliez pas de faire référence à "System.Web.Extensions".

3voto

Rory Points 1786

Jetez un coup d'œil à la section C# (scoll jusqu'en bas) de http://json.org/ Ils disposent de plusieurs implémentations de sérialiseurs et d'analyseurs syntaxiques qui devraient vous aider.

1voto

Grzenio Points 16802

J'utilise avec succès JayRock : http://jayrock.berlios.de/

public class JayRockMarshaller : IMarshaller
{
    public ICollection Read(string text)
    {
        return (ICollection)new ImportContext().Import(new JsonTextReader(new StringReader(text)));
    }

    public string Write(ICollection objectToMarshal)
    {
        var writer = new StringWriter();
        new ExportContext().Export(objectToMarshal, new JsonTextWriter(writer));
        return writer.ToString();
    }
}

Fonctionne pour les dictionnaires et les listes comme un rêve.

0voto

Mr W Points 180

Regardez aussi https://github.com/jlarsson/Kiwi.Json il gère toutes sortes de types de données et vous pouvez facilement créer votre propre convertisseur si le convertisseur intégré ne convient pas.

Il y a un blog où vous pouvez trouver des échantillons sur ce sujet par exemple : http://dancewithcode.wordpress.com/2012/03/24/case-study-custom-json-converter-for-datatable/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X