【发布时间】:2015-11-08 08:44:18
【问题描述】:
我有一个不符合 JSON 标准的 JSON 对象,我无法更改对象的结构以使其符合 JSON 标准。
我需要在 Jade 模板中的 javascript 块中间渲染这个对象。该对象实际上是一个配置对象,它位于模板中的功能块中。
这里是对象。
{
services: [],
version: "1438276796258",
country: "default",
role: "User",
Zack_Init: function () {
},
Zack_Global: function (event) {
},
Zack_PostRender: function () {
},
renderers: ['Renderer', 'NONE']
}
更新 这是我从 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);
}
});
}
当 JSON.stringify 处理对象时,它会在转换过程中删除三个函数。
我正在添加一个 plunker 来显示当前解决方案的进度。输出以下内容。唯一剩下的就是删除格式化字符。
{"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>
【问题讨论】:
-
具体问题是什么?你试过什么没用?你只是显示一个字符串吗?
-
已更新以给出实际问题。
标签: javascript json node.js pug