Si eres como yo y está intentando utilizar DataContractJsonSerializer en una base de código de plataforma cruzada, es bastante fácil para envolver la API JSON.NET (también conocido como Newtonsoft.Json) en un DataContractJsonSerializer:
using System;
using System.IO;
using System.Reflection;
using Newtonsoft.Json;
namespace System.Runtime.Serialization.Json
{
public class DataContractJsonSerializer
{
private Type type;
private JsonSerializer js;
public DataContractJsonSerializer (Type t)
{
this.type = t;
this.js = new JsonSerializer();
}
public object ReadObject(Stream stream)
{
StreamReader reader = new StreamReader(stream);
return js.Deserialize(reader, type);
}
public void WriteObject(Stream stream, object o)
{
StreamWriter writer = new StreamWriter(stream);
js.Serialize(writer, o);
writer.Flush();
}
}
}
Por supuesto, eso plantea la pregunta de por qué no cambiar a usar la API de JSON.NET en todas partes ... mi experiencia personal con esa API es que puede ser más lenta que usar DCJS (al menos en mis pruebas informales en Windows Phone).
Espero que ayude!
Hola miguel, ¿estás seguro? Veo esta pregunta http://stackoverflow.com/questions/3516471/javascriptserializer-and-monodevelop y también leí el libro mencionado, pero finalmente Marcus usó DataContractJsonSerializer – NewComer
No hay nada en esa publicación. –
Aunque no estoy seguro de DataContractJsonSerializer en Monotouch, miguel me provocó. No lo hago con estos códigos // ----- datos de Json de parse ----- JsonArray jsonArray = JsonArray.Parse (responseBody) as JsonArray; Lista marcas = nueva Lista (); foreach (JsonObject jsonObject en jsonArray) { Marca de la marca = nueva Marca(); brand.ID = jsonObject ["BrandID"]; brand.Name = jsonObject ["Name"]; brand.Country = jsonObject ["País"]; brands.Add (marca); } –
NewComer