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

如何调整JSON.stringify输出结构,生成含characters字段的JSON字符串?

问题描述

现有如下JSON字符串:

[{"spawnIndex":0,"name":"name","surname":"surname","level":0,"cash":0,"bank":0,"gender":"male","fraction":"fraction","family":"family","playedTime":"0","ban":{}}]

它是通过以下JavaScript代码生成的:

let charackters = [];

charackters.push({
    spawnIndex: 0,
    name: 'name',
    surname: 'surname',
    level: 0,
    cash: 0,
    bank: 0,
    gender: 'male',
    fraction: 'fraction',
    family: 'family',
    playedTime: '0',
    ban: {}
});

let string = JSON.stringify(charackters);

需要将该字符串调整为如下格式(这是JavaScript对象字面量,非严格JSON):

{
    characters: [{
        spawnIndex: 0,
        name: 'name',
        surname: 'surname',
        level: 0,
        cash: 0,
        bank: 0,
        gender: 'male',
        fraction: 'fraction',
        family: 'family',
        playedTime: '0',
        ban: {}
    }]
}

解决方案

1. 修改原生成代码(推荐)

直接在生成阶段构建目标结构,无需事后处理字符串:

let characters = [];

characters.push({
    spawnIndex: 0,
    name: 'name',
    surname: 'surname',
    level: 0,
    cash: 0,
    bank: 0,
    gender: 'male',
    fraction: 'fraction',
    family: 'family',
    playedTime: '0',
    ban: {}
});

// 构建包含characters字段的外层对象
const resultObject = { characters: characters };

// 自定义格式化函数,将JSON转换为目标对象字面量格式
function formatToTarget(obj) {
    return JSON.stringify(obj, null, 4)
        .replace(/"([^"]+)":/g, '$1:') // 去掉键名的双引号
        .replace(/"/g, "'"); // 把字符串的双引号换成单引号
}

const formattedString = formatToTarget(resultObject);
console.log(formattedString);

2. 处理已有的JSON字符串

如果已经拿到初始的JSON字符串,可通过解析、重新包装、格式化三步完成转换:

// 初始JSON字符串
const originalJson = '[{"spawnIndex":0,"name":"name","surname":"surname","level":0,"cash":0,"bank":0,"gender":"male","fraction":"fraction","family":"family","playedTime":"0","ban":{}}]';

// 解析为JavaScript数组
const charactersArray = JSON.parse(originalJson);

// 包装成目标结构的对象
const targetObject = { characters: charactersArray };

// 格式化并转换为目标格式
const formattedString = JSON.stringify(targetObject, null, 4)
    .replace(/"([^"]+)":/g, '$1:')
    .replace(/"/g, "'");

console.log(formattedString);

注意事项

  • 目标格式不属于严格JSON:JSON规范要求键名必须用双引号,字符串也必须用双引号,而目标格式使用了无引号键名和单引号字符串,这是JavaScript对象字面量的写法。
  • 正则替换仅适用于结构简单的场景,如果对象嵌套层级复杂或字符串中包含特殊字符,可能需要更严谨的处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:05:07