Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何准确地使用Java脚本JSON.parse()函数来显示文本平面?_Javascript_Json_Parsing - Fatal编程技术网

Javascript 如何准确地使用Java脚本JSON.parse()函数来显示文本平面?

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

我尝试使用parse函数,但它并没有按照我希望的方式工作。这是我加载.json文件并将其打印到终端的代码

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)
            : '""'
    ));
}