Pregunta Node.js JavaScript-stringify


JSON no es un subconjunto de JavaScript. Necesito que mi salida sea 100% válida de JavaScript; se evaluará como tal, es decir, JSON.stringify No (siempre) trabajará para mis necesidades.

¿Hay un Strifier de JavaScript para el nodo?

Como beneficio adicional, sería bueno si pudiera encadenar objetos.


5
2018-04-14 22:25


origen


Respuestas:


Puedes usar JSON.stringify y luego reemplace los restantes U + 2028 y U + 2029 caracteres. Como el artículo establece un vínculo entre los estados, los caracteres solo pueden aparecer en las cadenas, por lo que podemos reemplazarlos de manera segura por sus versiones de escape sin tener que preocuparnos por reemplazar los caracteres donde no deberíamos reemplazarlos:

JSON.stringify('ro\u2028cks').replace(/\u2028/g,'\\u2028').replace(/\u2029/g,'\\u2029')

10
2018-04-14 23:25



Del último párrafo en el artículo que vinculaste:

La solución

Afortunadamente, la solución es simple: si miramos la especificación JSON vemos que el único lugar donde puede ocurrir un U + 2028 o un U + 2029 es en una cadena. Por lo tanto, simplemente podemos reemplazar cada U + 2028 con \ u2028 (la secuencia de escape) y U + 2029 con \ u2029 cada vez que necesitemos enviar algo de JSONP.

Ya se ha corregido en Rack :: JSONP y animo a todos los frameworks o bibliotecas que envían JSONP a hacer lo mismo. Es un parche de una línea en la mayoría de los idiomas y el resultado sigue siendo JSON 100% válido.


1
2018-04-14 22:28