Pregunta

Acabo de descargar ServiceStack.text para usarlo en mi ASP.NET. Tengo clase con muchas propiedades y me gustaría serializar cinco de ellas (String, Integer, Binary) a JSON. ¿Alguien podría publicar un ejemplo simple de cómo crear objeto JSON a partir de mi clase?

¿Fue útil?

Solución

ServiceStack deserializará todas las propiedades públicas de un POCO por defecto.

Si solo desea serializar solo algunas de las propiedades, entonces desea decorar su clase con [DataContract], [DataMember] atributos (de la misma manera que lo haría si estuviera usando MS DatacontractJSonserializer), por ejemplo:

[DataContract]
public class MyClass
{
    public string WillNotSerializeString { get; set; }

    [DataMember]
    public string WillSerializeString { get; set; }

    [DataMember]
    public int WillSerializeInt { get; set; }

    [DataMember]
    public byte[] WillSerializeByteArray { get; set; }
}

Luego, puede usar los métodos de utilidad estática en JSonserializer para (DE) serializarlo, o los métodos de extensión más exigentes, por ejemplo, por ejemplo:

var dto = new MyClass { WillSerializeString = "some text" };
string json = dto.ToJson();
MyClass fromJson = json.FromJson<MyClass>();

Editar:

Como @noah menciona (de comentarios) también puede usar el atributo [IgnoredAtamember] para excluir una sola propiedad.

Otros consejos

Puedes usar el [Serializable()] Atributo en su clase personalizada y luego:

JavaScriptSerializer serializer = new JavaScriptSerializer();

var Json = serializer.Serialize(myObject);

Para ignorar las propiedades específicas en el objeto que está serializando, simplemente coloque el [NonSerialized] atribura sobre ellos.

Actualizar:

Dado que desea utilizar ServiceStack para hacer su serialización, el sitio web de ServiceStack ofrece el siguiente ejemplo:

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

Fuente: http://www.servicestack.net/mythz_blog/?p=344

La prueba de ServiceStack demuestra que al proporcionar el [DataContract] y [DataMember] El atributo le permite determinar cuál se está serializando y cuál no.

Prueba: https://github.com/servicestack/servicestack.text/blob/master/tests/servicestack.text.tests/datacontracttests.cs

Objetos en la prueba: https://github.com/servicestack/servicestack.text/blob/master/tests/servicestack.text.tests/support/ddndtos.cs

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top