110 votos

Cómo crear cadena JSON en C#

Acabo de utilizar el XmlWriter para crear algo de XML a enviar de vuelta en una respuesta HTTP. ¿Cómo crear una cadena JSON. Supongo que usted podría usar stringbuilder para construir la cadena JSON y les formato de su respuesta JSON?

155voto

CMS Puntos 315406

Se podría utilizar el JavaScriptSerializer de clase, consulte este artículo para construir un útil método de extensión.

Código de artículo:

namespace ExtensionMethods
{
    public static class JSONHelper
    {
        public static string ToJSON(this object obj)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize(obj);
        }

        public static string ToJSON(this object obj, int recursionDepth)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            serializer.RecursionLimit = recursionDepth;
            return serializer.Serialize(obj);
        }
    }
}

Uso:

using ExtensionMethods;

...

List<Person> people = new List<Person>{
                   new Person{ID = 1, FirstName = "Scott", LastName = "Gurthie"},
                   new Person{ID = 2, FirstName = "Bill", LastName = "Gates"}
                   };


string jsonString = people.ToJSON();

121voto

Orr Puntos 1053

El Uso De Newtonsoft.Json hace que sea realmente fácil:

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);

16voto

Hugoware Puntos 13645

Esta biblioteca es muy bueno para JSON desde C#

http://james.newtonking.com/pages/json-net.aspx

8voto

Joe Chung Puntos 6263

Este fragmento de código utiliza la DataContractJsonSerializer de Sistema.En tiempo de ejecución.La serialización.Json .NET 3.5.

public static string ToJson<T>(/* this */ T value, Encoding encoding)
{
    var serializer = new DataContractJsonSerializer(typeof(T));

    using (var stream = new MemoryStream())
    {
        using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, encoding))
        {
            serializer.WriteObject(writer, value);
        }

        return encoding.GetString(stream.ToArray());
    }
}

5voto

Josh Puntos 552

Echa un vistazo a http://www.codeplex.com/json/ para el json-net.aspx proyecto. ¿Por qué re-inventar la rueda?

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: