
本文详解两种安全、标准的方式:使用模板字符串插值或先构建对象再序列化,避免手动拼接 json 字符串引发的语法错误和安全风险。
本文详解两种安全、标准的方式:使用模板字符串插值或先构建对象再序列化,避免手动拼接 json 字符串引发的语法错误和安全风险。
在 JavaScript 中,将变量动态写入 JSON 并非简单地“把变量名塞进字符串”,而需严格遵循 JSON 语法规范——所有字符串键和值都必须用双引号包裹,且原始 JavaScript 变量(如 userName = "Bob")不能直接出现在未解析的 JSON 字符串中。
你最初尝试的写法:
const userJSON = `{
"playerName": userName
}`;
会报错,因为 "playerName": userName 不是合法 JSON(userName 是变量名,不是字符串字面量),JavaScript 解析器会将其视为未定义标识符,而非 "Bob" 的值。
✅ 正确做法一:使用模板字符串 + 显式引号(仅适用于简单、可信字符串)
const userName = "Bob";
const userJSON = `{ "playerName": "${userName}" }`;
console.log(userJSON); // → { "playerName": "Bob" }
⚠️ 注意:此方式不推荐用于用户输入或含特殊字符(如引号、换行、反斜杠)的值,否则极易破坏 JSON 结构,甚至引发注入问题。例如当 userName = 'Alice"321' 时,生成的 JSON 将因未转义双引号而非法。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
✅ 推荐做法二:先创建 JavaScript 对象,再用 JSON.stringify() 安全序列化
这是最可靠、最符合最佳实践的方式:
const userName = "Bob";
const userOBJ = { playerName: userName }; // 普通 JS 对象(键可省略引号)
const userJSON = JSON.stringify(userOBJ);
console.log(userJSON); // → {"playerName":"Bob"}
JSON.stringify() 会自动处理:
- 字符串值的双引号包裹;
- 特殊字符(如 ", \, \n, \t)的转义;
- null、boolean、number 等类型的正确序列化;
- 数组、嵌套对象的递归格式化。
? 实际应用示例(表单数据转 JSON):
function createPlayerJSON(name, level, inventory) {
const player = {
playerName: name.trim(),
level: Number(level) || 1,
inventory: Array.isArray(inventory) ? inventory : [],
timestamp: new Date().toISOString()
};
return JSON.stringify(player, null, 2); // 可选:缩进美化输出
}
// 使用示例
const jsonOutput = createPlayerJSON("Alice", "5", ["sword", "potion"]);
console.log(jsonOutput);
// 输出(格式化):
// {
// "playerName": "Alice",
// "level": 5,
// "inventory": ["sword", "potion"],
// "timestamp": "2024-06-15T08:30:45.123Z"
// }
? 总结建议:
- ✅ 永远优先选择 JSON.stringify(obj) —— 安全、健壮、可维护;
- ❌ 避免手动拼接 JSON 字符串(尤其涉及用户输入);
- ? 若必须使用模板字符串,请确保变量已通过 JSON.stringify() 处理后再插入,例如:
const userJSON = `{ "playerName": ${JSON.stringify(userName)} }`; - ? 最终可用 JSON.parse() 验证生成结果是否合法:JSON.parse(userJSON) 应无异常。
掌握这一模式,不仅能正确生成 JSON,更是构建可扩展、可信赖数据交互的基础。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










