You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JavaScript对象验证格式化后转换为合法JSON发送至NestJS后端

可选转换方案(按可靠性从高到低排序)

  • 方案1:直接使用原生JSON.stringify()(优先推荐)
    只要你可以在Angular前端代码中直接拿到原始的JS对象,不需要手动做任何字符串处理,原生方法会自动把所有键转为双引号、自动移除尾随逗号,输出完全符合规范的JSON字符串:

    // 原始配置对象
    const config = {
      service: {
        port: 3080,
      },
      datasource: {
        m3: {
          rest: {
            url: 'https://se/',
            username: 'di.com',
            password: 'B4',
          },
        },
        postgraphile: {
          url: 'https://gl',
          hostname: 'sg',
          port: 1133,
          database: 'MV',
          username: 'rr',
          password: '1',
        },
      },
      database: {
        pg: {
          hostname: 'ss.com',
          port: 5432,
          username: 'br',
          password: '1x',
          database: 'eb',
          synchronize: false,
        },
        mssql: {
          hostname: '10.100.100.100',
          port: 1133,
          database: 'MV',
          schema: 'MA',
          username: 'rr',
          password: 'we',
        },
        redis: {
          url: 'redis:///0',
        },
      },
      graphql: {
        playground: true,
      },
    }
    // 直接转合法JSON,第三个参数2代表格式化缩进为2空格,不需要格式化可以省略
    const validJson = JSON.stringify(config, null, 2)
    

    转换后直接把validJson作为请求体传给NestJS后端即可,NestJS内置的body解析器可以直接解析该格式。

  • 方案2:使用new Function解析JS对象字面量字符串
    如果你拿到的不是可直接访问的JS对象,而是带单引号、尾随逗号的对象字面量纯字符串,可以用该方法先把字符串解析为JS对象,再转JSON,注意该方法仅适用于来源可信的字符串:

    // 你的对象字面量字符串
    const objStr = `{
      service: {
        port: 3080,
      },
      // 完整的对象字符串内容
    }`
    // 解析为JS对象,自动兼容JS语法的单引号、尾随逗号
    const parsedObj = new Function(`return ${objStr}`)()
    // 转合法JSON
    const validJson = JSON.stringify(parsedObj, null, 2)
    
  • 方案3:正则补充处理尾随逗号
    如果你要继续用原来的正则处理逻辑,只需要新增一步正则替换,移除多余的尾随逗号即可:

    var objKeysRegex = /({|,)(?:\s*)(?:')?([A-Za-z_$\.][A-Za-z0-9_ \-\.$]*)(?:')?(?:\s*):/g;
    var newQuotedKeysString = b.replace(objKeysRegex, "$1\"$2\":");
    // 新增:匹配逗号后紧跟}或]的情况,移除多余逗号
    const validJsonStr = newQuotedKeysString.replace(/,(\s*[}\]])/g, '$1')
    

    注意该方案仅适合结构简单的对象,遇到值内包含特殊符号的复杂场景容易出现匹配错误。


内容的提问来源于stack exchange,提问作者Sadusha Nadeesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:18:03