web-dev-qa-db-fra.com

Bibliothèque JSON pour C #

Microsoft fournit-il une bibliothèque pour travailler avec JSON en C #? Si non, quelle bibliothèque open source recommandez-vous?

76
weilin8
77
Amy

Vous devriez également essayer mon ServiceStack JsonSerializer - c'est le sérialiseur JSON .NET le plus rapide du moment basé sur les tests de performance des principaux sérialiseurs JSON et prend en charge la sérialisation de tout type de POCO, DataContracts, Listes/Dictionnaires, interfaces, héritage, objets à liaison tardive, y compris les types anonymes, etc.

Exemple de base

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

Remarque: N'utilisez JavaScriptSerializer de Microsofts que si les performances ne sont pas importantes pour vous, car je dois le laisser en dehors de mes performances depuis 40x-100x . plus lent que les autres sérialiseurs JSON.

19
mythz

Le framework .net prend en charge JSON via JavaScriptSerializer. Voici un bon exemple pour vous aider à démarrer.

using System.Collections.Generic;
using System.Web.Script.Serialization;

namespace GoogleTranslator.GoogleJSON
{
    public class FooTest
    {
        public void Test()
        {
            const string json = @"{
              ""DisplayFieldName"" : ""ObjectName"", 
              ""FieldAliases"" : {
                ""ObjectName"" : ""ObjectName"", 
                ""ObjectType"" : ""ObjectType""
              }, 
              ""PositionType"" : ""Point"", 
              ""Reference"" : {
                ""Id"" : 1111
              }, 
              ""Objects"" : [
                {
                  ""Attributes"" : {
                    ""ObjectName"" : ""test name"", 
                    ""ObjectType"" : ""test type""
                  }, 
                  ""Position"" : 
                  {
                    ""X"" : 5, 
                    ""Y"" : 7
                  }
                }
              ]
            }";

            var ser = new JavaScriptSerializer();
            ser.Deserialize<Foo>(json);
        }
    }

    public class Foo
    {
        public Foo() { Objects = new List<SubObject>(); }
        public string DisplayFieldName { get; set; }
        public NameTypePair FieldAliases { get; set; }
        public PositionType PositionType { get; set; }
        public Ref Reference { get; set; }
        public List<SubObject> Objects { get; set; }
    }

    public class NameTypePair
    {
        public string ObjectName { get; set; }
        public string ObjectType { get; set; }
    }

    public enum PositionType { None, Point }
    public class Ref
    {
        public int Id { get; set; }
    }

    public class SubObject
    {
        public NameTypePair Attributes { get; set; }
        public Position Position { get; set; }
    }

    public class Position
    {
        public int X { get; set; }
        public int Y { get; set; }
    }
}
14
Ty.

Si vous regardez ici, vous verrez plusieurs bibliothèques différentes pour JSON en C #.

http://json.org/

Vous trouverez une version pour LINQ ainsi que quelques autres. Il y a environ 7 bibliothèques pour C # et JSON.

7
James Black
5
slolife

Jetez un œil à l'espace de noms system.web.script.serialization (je pense que vous aurez besoin de .Net 3.5)

3
Hannoun Yassir

Pour donner une réponse plus actuelle à cette question: oui, .Net inclut JSON seriliazer/deserliazer depuis la version 3.5 via l'espace de noms System.Runtime.Serialization.Json: http://msdn.Microsoft.com/en -us/library/system.runtime.serialization.json (v = vs.110) .aspx

Mais selon le créateur de JSON.Net, le .Net Framework par rapport à son implémentation open source est beaucoup plus lent.

2
Pejvan

Pour répondre à votre première question, Microsoft fournit un DataContractJsonSerializer: voir msdn Procédure: sérialiser et désérialiser des données JSON

1
Maggie Ying

Essayez le projet Vici, analyseur Vici. Il comprend un analyseur/jeton JSON. Cela fonctionne très bien, nous l’utilisons avec le framework MVC.

Plus d'infos sur: http://viciproject.com/wiki/projects/parser/home

J'ai oublié de dire que c'est une source ouverte, vous pouvez donc toujours consulter le code si vous le souhaitez.

0
Bjorn Bailleul