Saltar al contenido

¿Cómo serializar y deserializar objetos JavaScript?

Solución:

En general, no hay forma (en un navegador) de serializar objetos con funciones adjuntas a ellos, ya que cada función tiene una referencia a su alcance externo. Si la función hace referencia a cualquiera de esas variables, ya no existirán cuando la deserialice.

Lo que haría es usar el incorporado (o json2.js) JSON.stringify y JSON.parse funciones con el replacer y reviver parámetros. Aquí hay un ejemplo parcial de cómo funcionaría:

JSON.stringify(yourObject, function(name, value) {
    if (value instanceof LatLng) { // Could also check the name if you want
        return 'LatLng(' + value.lat() + ',' + value.lng() + ')';
    }
    else if (...) {
        // Some other type that needs custom serialization
    }
    else {
        return value;
    }
});

JSON.parse(jsonString, function(name, value) {
    if (/^LatLng(/.test(value)) { // Checking the name would be safer
        var match = /LatLng(([^,]+),([^,]+))/.exec(value);
        return new LatLng(match[1], match[2]);
    }
    else if (...) {
        ...
    }
    else {
        return value;
    }
});

Puede utilizar cualquier formato de serialización que desee en sus tipos personalizados. El formato “LatLng (latitud, longitud)” es solo una forma de hacerlo. Incluso podría devolver un objeto javascript que se puede serializar en JSON de forma nativa.

No desea serializar lógica como funciones.

Si tiene que actualizar sus funciones de la lógica / js en el futuro, no desea (siempre) que la lógica anterior se cargue de nuevo con los datos necesariamente. Tener cuidado.

usar gserializer:

http://www.onegeek.com.au/articles/programming/javascript-serialization.php

el código en google:

http://code.google.com/p/gserializer/

GSerializer es una biblioteca javascript para serializar / deserializar objetos javascript hacia y desde cadenas, para persistencia en, por ejemplo, una cookie. A diferencia de muchas otras implementaciones, GSerializer también puede serializar funciones y notación no JSON.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *