【问题标题】:How do I convert a large JSON object to a string looking like console.log() in Node.js如何在 Node.js 中将大型 JSON 对象转换为类似于 console.log() 的字符串
【发布时间】:2026-01-06 21:50:01
【问题描述】:

我正在尝试在不显示所有子对象的情况下串接一个大型 JSON 对象。例如我的对象在某些地方有大约 20 层对象。

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

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

我搜索了任何尝试这样做的人,有可能我只是不知道正确的搜索词,但我什么也没找到。我还寻找可能没有运气处理这个问题的库。我在想我可以重写JSON.stringify(),但似乎应该有更简单的方法。

感谢阅读!

【问题讨论】:

    标签: node.js json console.log stringify


    【解决方案1】:

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

    const util = require('util');
    
    const json_object = {
       "name": "*",
       "properties":{
          "url":"https://*.com/questions/67029935",
          "users":{
             "name":"Matt Vine",
             "stats":{
                "reputation": 51,
                "badges": 11
             }
          }
       }
    };    
    
    let string = util.inspect(json_object, {depth: 2})
    

    这将产生以下字符串:

    { name: '*',
      properties:
       { url: 'https://*.com/questions/67029935',
         users: { name: 'Matt Vine', stats: [Object] } } }
    

    如果您想保持对象的“可视”结构,您可以将compact 选项设置为false

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

    给我们:

    {
      name: '*',
      properties: {
        url: 'https://*.com/questions/67029935',
        users: {
          name: 'Matt Vine',
          stats: [Object]
        }
      }
    }
    

    【讨论】: