【问题标题】:How do I use the Java Script JSON.parse() function exactely to display the text flat?如何使用 Javascript JSON.parse() 函数准确地显示文本?
【发布时间】:2021-01-21 03:50:41
【问题描述】:

我尝试使用 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?' }   
  }
}

但我希望这一切都在同一条线上,这可能吗?

【问题讨论】:

  • 欢迎来到 SO!这不是您要打印的 JSON(字符串),而是解析后的 JS 对象。 console.log 只是漂亮地打印它。

标签: javascript json parsing


【解决方案1】:

当您记录一个对象或数组时,控制台可能会尝试对其进行美化 - 例如,在单独的行上显示键值对。如果你想在一行上显示,而源文件的文本都在一行上,那么就不要JSON.parse它,而是显示纯文本

function loadJSON(filename = ''){
    return fs.existsSync(filename)
        ? fs.readFileSync(filename)
        : '""'
}

如果源文件的文本分布在多行,您可以将其解析为一个对象,然后将其转回一个字符串,而无需额外的空格:

function loadJSON(filename = ''){
    return JSON.stringify(JSON.parse(
        fs.existsSync(filename)
            ? fs.readFileSync(filename)
            : '""'
    ));
}

【讨论】:

  • 问题是文本在源文件中没有一行显示。
  • 您可以解析然后字符串化以删除间距。
猜你喜欢
  • 2018-04-15
  • 2016-05-22
  • 2023-02-25
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多