Salida de un objeto json generado por el servidor en jade sin análisis json
Tengo un objeto JSON que no se ajusta a los estándares JSON, y no puedo cambiar la estructura del objeto para que se adhiera a los estándares JSON.
Necesito hacer que este objeto se procese en el medio de un bloque javascript en una plantilla Jade. El objeto es en realidad un objeto de configuración que va en un bloque de funciones en la plantilla.
Aquí está el objeto.
{
services: [],
version: "1438276796258",
country: "default",
role: "User",
Zack_Init: function () {
},
Zack_Global: function (event) {
},
Zack_PostRender: function () {
},
renderers: ['Renderer', 'NONE']
}
ACTUALIZAR Así es como obtengo ese objeto de un archivo JS.
function readJSFile(url, filename, callback) {
fs.readFile(url, "utf-8", function (err, data) {
if (err) {
callback(err);
return;
}
try {
callback(filename, data);
} catch (exception) {
callback(exception);
}
});
}
Cuando JSON.stringify procesa el objeto, deja caer las tres funciones en el proceso de conversión.
Estoy agregando un plunker para mostrar el progreso de la solución actual. Lo que da salida a continuación. Lo único que queda es eliminar los caracteres de formato.
{"services":[],"version":"1438276796258","country":"default","role":"User","Zack_Init":function () {\n\n },"Zack_Global":function (event) {\n\n },"Zack_PostRender":function () {\n\n },"renderers":["Renderer","NONE"]}
function convertToString(obj) {
return JSON.stringify(obj, function(k, v) {
return (typeof v === 'function' ? ['@@beginFunction@@', v.toString(), '@@endFunction@@'].join('') : v);
}).replace(/"@@beginFunction@@|@@endFunction@@"/g, '');
}
obj = {
services: [],
version: "1438276796258",
country: "default",
role: "User",
Zack_Init: function() {
},
Zack_Global: function(event) {
},
Zack_PostRender: function() {
},
renderers: ['Renderer', 'NONE']
};
$('#test').text(convertToString(obj));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test"></div>