Saída de um objeto json gerado pelo servidor no jade sem análise do json
Eu tenho um objeto JSON que não está em conformidade com os padrões JSON e não posso alterar a estrutura do objeto para fazê-lo aderir aos padrões JSON.
Eu preciso fazer esse objeto renderizar no meio de um bloco javascript em um modelo Jade. O objeto é na verdade um objeto de configuração que está entrando em um bloco de funções no modelo.
Aqui está o objeto.
{
services: [],
version: "1438276796258",
country: "default",
role: "User",
Zack_Init: function () {
},
Zack_Global: function (event) {
},
Zack_PostRender: function () {
},
renderers: ['Renderer', 'NONE']
}
ATUALIZAR Aqui está como estou obtendo esse objeto de um arquivo 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);
}
});
}
Quando o JSON.stringify processa o objeto, ele descarta as três funções no processo de conversão.
Estou adicionando um desentupidor para mostrar o progresso da solução atual. Qual saída abaixo. A única coisa que resta é remover os caracteres de formatação.
{"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>