27 votes

Quelle bibliothèque JSON fonctionne bien pour vous dans .NET?

Je serais intéressé à entendre ce que JSON de la bibliothèque, des gens de la communauté ont été d'une aide à l'intérieur de .NET? J'ai un besoin d'analyser/sérialiser certains objet JSON des graphiques à partir de l'intérieur .NET (C#) au réel .Types de réseau. Je pouvais rouler mon propre, mais si il y a quelques solides bibliothèques de gens l'ont utilisé, j'aimerais entendre vos commentaires. J'ai vu la liste des bibliothèques sur la json.org site, mais c'est une assez grande liste et la communauté est généralement bon à l'examen les candidats de les prétendants

Tous les détails (avantages/inconvénients) de votre expérience avec la bibliothèque devrait être incroyablement utile. -- merci à l'avance.

21voto

brianng Points 4478

J'ai utilisé Json.NET avec succès dans le passé.

Exemple du site:

 Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };

string json = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "Expiry": new Date(1230422400000),
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
 

15voto

Chad Grant Points 16571

Il y a au moins deux intégrés dans le cadre.

Le plus récent : Système.Moment de l'exécution.La sérialisation.Json

et le plus : Système.Web.La sérialisation

Je préfère ne pas avoir de dépendances sur 3ème partie de bibliothèques. Je travaille avec JSON tous les jours et n'ont jamais eu besoin de rien de plus que ce qui existe déjà dans le cadre.

11voto

bendewey Points 25437

J'ai écrit mon propre sérialiseur JSON à l'aide de DataContractJsonSerializer dans l' assembly System.ServiceModel.Web.dll [qui est un composant de WCF inclus dans .NET 3.5 en tant qu'assembly standard et dans le profil client .NET 3.5 SP1] (dans .NET 4.0 et Silverlight 4, il a été déplacé vers System.Runtime.Serialization.dll ).

 using System.IO;
using System.Runtime.Serialization.Json;

public class JsonObjectSerializer 
{
    public string Serialize<T>(T instance) where T : class
    {
        var serializer = new DataContractJsonSerializer(typeof(T));
        using (var memoryStream = new MemoryStream())
        {
            serializer.WriteObject(memoryStream, instance);

            memoryStream.Flush();
            memoryStream.Position = 0;

            using (var reader = new StreamReader(memoryStream))
            {
                return reader.ReadToEnd();
            }
        }
    }

    public T Deserialize<T>(string serialized) where T : class
    {
        var serializer = new DataContractJsonSerializer(typeof(T));
        using (var memoryStream = new MemoryStream())
        {
            using (var writer = new StreamWriter(memoryStream))
            {
                writer.Write(serialized);
                writer.Flush();

                memoryStream.Position = 0;

                return serializer.ReadObject(memoryStream) as T;
            }
        }
    }
}
 

4voto

mythz Points 54874

Vous devriez également essayer de mon ServiceStack JsonSerializer - il est le plus rapide .NET sérialiseur JSON pour le moment basé sur les critères de référence de la principale JSON sérialiseurs et prend en charge la sérialisation de tout Type POCO, DataContracts, Listes et les Dictionnaires, les Interfaces, Héritage, Tardive des objets, y compris les types anonymes, etc.

Exemple De Base:

Customer customer = new Customer { Name="Joe Bloggs", Age=31 };
string json = customer.ToJson();
Customer fromJson = json.FromJson<Customer>(json); 

2voto

Richard Points 54016

Consultez l'espace de noms System.Runtime.Serialization.Json inclus avec .NET 3.5.

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