📜  如何在 JavaScript 中漂亮地打印 JSON字符串?(1)

📅  最后修改于: 2023-12-03 15:24:13.254000             🧑  作者: Mango

如何在 JavaScript 中漂亮地打印 JSON 字符串?

在开发过程中,我们经常需要输出 JSON 字符串,但是原始的 JSON 串可能很难阅读。那么,我们如何在 JavaScript 中漂亮地打印 JSON 字符串呢?本文将介绍两种方法:一种是使用 JSON.stringify() 方法的扩展参数,另一种是使用第三方库 - highlight.js。

使用 JSON.stringify() 方法的扩展参数

JSON.stringify() 方法是将 JavaScript 对象转换成 JSON 字符串的方法,其有两个参数:第一个参数是要转换的对象,第二个参数是转换选项。

针对我们的问题,我们使用扩展参数来打印漂亮的 JSON 字符串。

以下是代码片段:

const obj = {
  name: "xiaoming",
  age: 18,
  hobbies: ["basketball", "reading"],
};

const prettyJson = JSON.stringify(obj, null, 2);
console.log(prettyJson);

上述代码将使用 2 个空格来格式化输出 JSON 字符串。输出的结果如下所示:

{
  "name": "xiaoming",
  "age": 18,
  "hobbies": [
    "basketball",
    "reading"
  ]
}

这样输出的 JSON 字符串相对于原始的 JSON 字符串来说更加易读。

使用 highlight.js

highlight.js 是一个流行的语法高亮库,支持超过 180 种语言的代码高亮。我们可以利用它来将 JSON 字符串进行语法高亮。

以下是使用 highlight.js 进行语法高亮的代码片段:

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/styles/default.min.css" />
  </head>
  <body>
    <pre><code class="json"></code></pre>
    <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/highlight.min.js"></script>
    <script>
      const jsonStr = '{"name": "xiaoming", "age": 18, "hobbies": ["basketball", "reading"]}';
      document.querySelector("code").textContent = jsonStr;
      hljs.highlightAll();
    </script>
  </body>
</html>

上述代码会在页面中展示一个语法高亮的 JSON 字符串。

我们需要引入 highlight.js 的样式文件和 JS 文件。然后,创建一个包含 JSON 字符串的 pre 和 code 元素,并为该 code 元素设置 json 类型。

最后,使用 hljs.highlightAll() 方法来处理页面中所有的代码块,使其高亮显示。

总结:

以上两种方法都可以使 JSON 字符串读起来更加方便和易读。

使用扩展参数的方法更加简单,适用于控制台等场景。

而使用 highlight.js 的方法则更适用于页面显示。