¿Alguna idea de cómo hacerlo? Si no es posible, ¿cuál es una buena biblioteca JSON para C#?¿Cómo usar System.Json para proyectos que no son de Silverlight?
Respuesta
Json.NET es una excelente biblioteca .NET json. Admite LINQ, lectura/escritura y conversión de objetos hacia y desde json.
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;}
}
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.
Scott Guthrie escribió en su blog sobre este
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);
El paquete 'System.Json' ha sido descontinuado. Puede encontrar las clases apropiadas en el marco mismo. –
El propietario no ha incluido este paquete en la lista :( – Tito
@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
Otro La opción es usar la implementación de Mono de System.Json, Pude backportportarlo a C# 2.0 con algunos cambios menores.
https://github.com/mono/mono/tree/master/mcs/class/System.Json/System.Json
- 1. System.Json espacio de nombres que faltan desde Windows Phone 7
- 2. ¿Cómo puedo usar la macro TRACE en proyectos que no son MFC?
- 3. Cómo usar archivos compatibles con ARC en proyectos que no son compatibles con ARC
- 4. ¿Cómo puedo usar ensamblajes que no sean de Silverlight en una aplicación de Silverlight?
- 5. Emacs con Slime y Swank para proyectos que no son de Leiningen
- 6. ¿Existe una herramienta de "gráfico de impacto" para proyectos que no son de GitHub?
- 7. ¿Cómo puedo usar git para plantillas de proyectos?
- 8. Visual Studio 2010 no autolinking bibliotecas estáticas de proyectos que son dependencias como debe suponerse que
- 9. No iniciar ASP.NET Development Server al ejecutar proyectos que no son web
- 10. Para usar o no usar Scala para nuevos proyectos de Java?
- 11. ¿Cómo determina Silverlight que un conjunto es "Silverlight"?
- 12. ¿Cuáles son sus mejores prácticas para los proyectos de backbone.js?
- 13. cómo usar jquery para seleccionar todas las entradas, que no son enviar, reiniciar o botón?
- 14. Cómo archivar proyectos en Jira, para que desaparezcan del selector de proyectos
- 15. ¿Es demasiado temprano para usar ARC para nuevos proyectos?
- 16. ¿Cuáles son las ventajas de las funciones "aplicar"? ¿Cuándo son mejores para usar que "para" bucles, y cuándo no?
- 17. ¿Debo usar el patrón Model-View-ViewModel (MVVM) en los proyectos de Silverlight?
- 18. Proyectos que usan py.test
- 19. ¿Cuáles son los proyectos más interesantes que rodean a python?
- 20. Algunos proyectos que no muestran Menús TFS
- 21. Binarios de Silverlight ¿Qué son .ni.dlls?
- 22. 'copia' para las clases que no son de casos?
- 23. ¿Cuáles son algunas ideas de proyectos para Arduino?
- 24. Cómo granulares son sus "proyectos" SVN:. Un proyecto grande que contiene varios "proyectos' aplicaciones releated o uno por aplicación
- 25. Cómo usar #include en proyectos grandes?
- 26. Cómo escribir Silverlight Controles que no pierden memoria
- 27. No se puede usar el espacio de nombre silverlight
- 28. OpenGL es mejor que Direct3D para juegos que no son?
- 29. TWRequest parece tener fugas cuando se usa en proyectos que no son ARC
- 30. .NET objetos que son iguales no dicen que son
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
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"]); –
Eso es mejor. Me gustaron mucho los operadores implícitos en la clase JsonValue. Puedo intentarlo. – Patrick