如何为节点的JSON.stringify()设置默认选项?
我知道我可以跑:
JSON.stringify(someObject, null, 2)
获得缩进输出。但是我记得有一种方法可以指定节点的JSON.stringify()
实现的默认选项,所以我可以这样做然后:
JSON.stringify(someObject)
并获得可读的输出。但我在node's docs中找不到JSON的提及。虽然我知道我可以修补JSON.stringify()...
global.originalJSONStringify = JSON.stringify
global.JSON.stringify = function wrappedJSONStringify(value, replacer, space = 2) {
return global.originalJSONStringify(value, replacer, space)
}
并作为测试:
var results = JSON.stringify({key: {subkey: 'value'}})
var expected = originalJSONStringify({key: {subkey: 'value'}}, null, 2)
assert.equal(results, expected)
但如果有更好的解决方案,我宁愿不这样做。
如何为节点的JSON.stringify()设置默认选项?
回答如下:来自Mozilla Docs
你可以做这样的事情
var obj = {
data: 'data',
toJSON(key){
if(key)
return `Now I am a nested object under key '${key}'`;
else
return this;
}
};
JSON.stringify(obj);
// '{"data":"data"}'
JSON.stringify({ obj })
// '{"obj":"Now I am a nested object under key 'obj'"}'
JSON.stringify([ obj ])
// '["Now I am a nested object under key '0'"]'