2009-04-22 6 views

Respuesta

7

Json.NET es una excelente biblioteca .NET json. Admite LINQ, lectura/escritura y conversión de objetos hacia y desde json.

+2

lo miraba. Parece demasiado productivo en comparación con System.Json. Principalmente estoy buscando usar Json para serializar y deserializar listas de estructuras de datos implícitas (tuplas, etc.). Ya estoy trabajando principalmente en datos dinámicos, por lo que su capacidad para serializar objetos fuertemente tipados no es exactamente algo que me entusiasme, y su otro método es excesivamente detallado. – Patrick

+2

Hace datos dinámicos como System.Json así como serialización/deserialización: JObject o = JObject.Parse ("{'first_name': 'Jeff', 'age': 30}"); Console.WriteLine (o ["first_name"]); –

+0

Eso es mejor. Me gustaron mucho los operadores implícitos en la clase JsonValue. Puedo intentarlo. – Patrick

0

Si lo que buscas es JSON codificación/decodificación, hay una biblioteca de extensión System.Web oficial de Microsoft que lo hace, las probabilidades son que usted probablemente ya tiene esta asamblea (System.Web.Extensions):

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

Ejemplo:

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

He aquí un método extenstion para serializar cualquier instancia de objeto a 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; 
    } 
} 

Deberá agregar una referencia a System.ServiceModel.Web para usar DataContractSerializer.

16

System.Json ya está disponible en proyectos no de Silverlight a través de NuGet (sistema de gestión de paquetes de .Net) y es de esperar que va a ser lanzado como parte del marco básico en vnext. El paquete NuGet se llama JsonValue.

Imaginemos que tenemos la siguiente JSON en la variable de cadena json:

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

Podemos escribir el valor "otro bar" a la consola usando el siguiente código:

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

El paquete 'System.Json' ha sido descontinuado. Puede encontrar las clases apropiadas en el marco mismo. –

+0

El propietario no ha incluido este paquete en la lista :( – Tito

+0

@PatrickHofman: ¿A qué versión se refiere? La última versión casi estable era https://www.nuget.org/packages/System.Json pero ahora también lo han dejado en desuso. – Sebastian

Cuestiones relacionadas