Javascript 如何准确地使用Java脚本JSON.parse()函数来显示文本平面?
我尝试使用parse函数,但它并没有按照我希望的方式工作。这是我加载.json文件并将其打印到终端的代码Javascript 如何准确地使用Java脚本JSON.parse()函数来显示文本平面?,javascript,json,parsing,Javascript,Json,Parsing,我尝试使用parse函数,但它并没有按照我希望的方式工作。这是我加载.json文件并将其打印到终端的代码 const fs = require('fs') function loadJSON(filename = ''){ return JSON.parse( fs.existsSync(filename) ? fs.readFileSync(filename) : '""' ) } data
const fs = require('fs')
function loadJSON(filename = ''){
return JSON.parse(
fs.existsSync(filename)
? fs.readFileSync(filename)
: '""'
)
}
data = loadJSON('test.json')
console.log(data)
但控制台中的输出是:
{
name: 'Frederik Message File',
Version: 'Frederik Support Asisstant',
messages: {
'21.01.2021': { name: 'Frederik', message: "I don't know what to say..." },
'22.01.2021': { name: 'Frederik', message: 'What am I supposed to do?' }
}
}
但我希望所有内容都在同一行上,这可能吗?当您记录对象或数组时,控制台可能会尝试对其进行优化,例如,在单独的行上显示键值对。如果您想在一行上显示所有内容,并且源文件的文本都在一行上,那么只需不
JSON.parse
it,然后显示纯文本:
如果源文件的文本分散在多行上,则可以将其解析为一个对象,然后将其转换回字符串,而不需要额外的间距:
function loadJSON(filename = ''){
return JSON.stringify(JSON.parse(
fs.existsSync(filename)
? fs.readFileSync(filename)
: '""'
));
}
欢迎来到SO!您打印的不是JSON(字符串),而是解析后的JS对象。
console.log
只是漂亮地打印了它。问题是文本在源文件中没有显示在一行中。您可以解析然后字符串化以删除间距。
function loadJSON(filename = ''){
return JSON.stringify(JSON.parse(
fs.existsSync(filename)
? fs.readFileSync(filename)
: '""'
));
}