script javascript json stringify

json javascript



Limitar la profundidad de la estratificación JSON (2)

Haga un clon profundo de su objeto (con una biblioteca como low-dash ), haga lo que quiera hacer y luego páselo a JSON.stringify. No intentaría reinventar JSON.stringify, eso es esfuerzo en el lugar equivocado.

[EDITAR] parece que alguien ya hizo lo que estabas sugiriendo: JSON.stringifica objetos profundos

Sin embargo, no recomendaría esto porque el JSON nativo. La cadena de clasificación siempre será más rápido y más robusto.

[EDITAR] aquí hay una biblioteca que parece hacer lo que quieres: http://philogb.github.io/jit/static/v20/Docs/files/Core/Core-js.html# $ jit.json.prune

Al estructurar un objeto con JSON.stringify (o algo similar) hay una manera de limitar la profundidad de la cadena, es decir, solo ir n niveles en el árbol de objetos e ignorar todo lo que viene después (o mejor: poner marcadores de posición allí, lo que indica algo fue dejado fuera?

Sé que JSON.stringify toma una función de reemplazo de la función de formulario function (key, value) pero no encontré la manera de obtener la profundidad en el objeto original del par clave-valor actual entregado a la función de reemplazo.

¿Hay alguna manera de hacer esto con la implementación predeterminada de JSON.stringify? O, ¿he llegado a un punto en el que debería implementar yo mismo la estratificación? ¿O hay otra biblioteca de clasificación que puede recomendar que tenga esta opción?


Quería encadenar un objeto en el primer nivel sin incluir una biblioteca de terceros / demasiado código.

En el caso de que busque lo mismo, aquí hay un resumen rápido para hacerlo:

var json = JSON.stringify(obj, function (k, v) { return k ? "" + v : v; });

EJEMPLO:

var obj = { keyA: "test", keyB: undefined, keyC: 42, } obj.keyD = obj; var json = JSON.stringify(obj, function (k, v) { return k ? "" + v : v; }); console.log(json);

Al agregar una cadena vacía antes del valor, convertirá el valor en cadena, automáticamente. Sin embargo, debemos verificar la clave para asegurarnos de no lanzar, cuando el elemento es nulo o no está definido.