如何将大型 JSON 对象转换为看起来像 Node.js 中的 console.log() 的字符串

How do I convert a large JSON object to a string looking like console.log() in Node.js

我正在尝试串接大型 JSON 对象而不显示所有子对象。比如我的物体在某些地方有大约20层物体。

起初我使用 console.log(jsonObject) 完美地输出了我的对象。它会显示大约 3 层然后如果有一个对象较低它会显示 [object Object].

我试图在不将结果记录到控制台而是记录到字符串的情况下获得同样的效果。

我搜索过任何试图这样做的人,有可能我只是不知道正确的搜索词,但我一无所获。我还寻找了可能无法处理这个问题的图书馆。我在想我可以重写 JSON.stringify() 但似乎应该有更简单的方法。

感谢阅读!

您可以使用 util 标准库 (util documentation) 的 inspect 方法来实现。这实际上是 console.log 在内部使用的,选项 depth 设置为 2

const util = require('util');

const json_object = {
   "name": "Whosebug",
   "properties":{
      "url":"
      "users":{
         "name":"Matt Vine",
         "stats":{
            "reputation": 51,
            "badges": 11
         }
      }
   }
};    

let string = util.inspect(json_object, {depth: 2})

这将产生以下字符串:

{ name: 'Whosebug',
  properties:
   { url: '
     users: { name: 'Matt Vine', stats: [Object] } } }

如果要保留对象的“视觉”结构,可以将 compact 选项设置为 false

let string = util.inspect(json_object, {depth: 2, compact: false})

给我们:

{
  name: 'Whosebug',
  properties: {
    url: '
    users: {
      name: 'Matt Vine',
      stats: [Object]
    }
  }
}