2009-04-22 7 views

Répondre

7

Json.NET est une excellente bibliothèque .NET json. Supporte LINQ, lire/écrire et convertir des objets depuis et vers json.

+2

Je l'ai regardé. Cela semble trop pour Enterprise par rapport à System.Json. Je cherche principalement à utiliser Json pour sérialiser et désérialiser des listes de structures de données implicites (tuples, etc.). Je travaille déjà principalement sur des données dynamiques, donc sa capacité à sérialiser des objets fortement typés n'est pas exactement quelque chose dont je suis ravi, et son autre méthode est trop verbeuse. – Patrick

+2

Il fait des données dynamiques comme System.Json ainsi que la sérialisation/désérialisation: JObject o = JObject.Parse ("{'first_name': 'Jeff', 'age': 30}"); Console.WriteLine (o ["prénom"]); –

+0

C'est mieux. J'ai vraiment aimé les opérateurs implicites sur la classe JsonValue. Je peux juste essayer. – Patrick

0

Si vous êtes à la recherche d'JSON encodage/décodage, il y a une bibliothèque d'extension System.Web officielle de Microsoft qui le fait, les chances sont que vous avez probablement déjà cette assemblée (System.Web.Extensions):

http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

exemple:

using System; 
using System.Web.Script.Serialization; 

class App 
{ 
    static void Main(string[] args = null) 
    { 
     JavaScriptSerializer jss = new JavaScriptSerializer(); 
     String sJson = "{\"Name\": \"Your name\"}"; 
     DesJson json = jss.Deserialize<DesJson>(sJson); 

     Console.WriteLine(json.Name); 
    } 
} 

class DesJson { 
    public string Name {get; set;} 
} 
0

est ici une méthode extenstion pour sérialiser une instance d'objet JSON:

public static class GenericExtensions 
{ 
    public static string ToJsonString<T>(this T input) 
    { 
     string json; 
     DataContractJsonSerializer ser = new DataContractJsonSerializer(input.GetType()); 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      ser.WriteObject(ms, input); 
      json = Encoding.Default.GetString(ms.ToArray()); 
     } 
     return json; 
    } 
} 

Vous devez ajouter une référence à System.ServiceModel.Web pour utiliser DataContractSerializer.

16

System.Json est maintenant disponible dans des projets non Silverlight via NuGet (système de gestion des paquets de .Net) et va, espérons-être publié dans le cadre du cadre de base en vnext. Le package NuGet est nommé JsonValue.

Imaginez que nous avons la JSON suivante dans la variable chaîne json:

[{"a":"foo","b":"bar"},{"a":"another foo","b":"another bar"}] 

Nous pouvons écrire la valeur "une autre barre" à la console en utilisant le code suivant:

using System.Json; 
dynamic jsonObj = JsonValue.Parse(json); 
var node = jsonObj[1].b; 
System.Console.WriteLine(node.Value); 
+0

Le package 'System.Json' a été interrompu. Vous pouvez trouver les classes appropriées dans le cadre lui-même. –

+0

Le propriétaire a désélectionné ce paquet :( – Tito

+0

@PatrickHofman: Quelle version voulez-vous dire? La dernière version presque stable était https://www.nuget.org/packages/System.Json mais maintenant ils l'ont aussi désapprouvé – Sebastian

Questions connexes