如何用JavaScript拼接带双引号的字符串生成目标JSON格式?
正确拼接带双引号的JSON格式字符串
需求目标
需要生成如下格式的字符串:
"refURL":"/unifiedconfig/config/agent/5113","agentId":"1312","firstName":"John","lastName":"Elway","userName":"jelway"
原代码问题
你尝试的代码把所有内容都塞到了refURL这一个键的值里,且未给其他键值对添加双引号,导致结果不符合预期:
原代码:
var skillTargetID = "1234"; var agentId = "2345"; var firstName = "Ganesh"; var lastName = "Putta"; var userName = "ganesh@gmail.com" agentjson = { "refURL": "/unifiedconfig/config/agent/" + skillTargetID + "," + "agentId" + ":" + agentId + "," + "firstName" + ":" + firstName + "," + "lastName" + ":" + lastName + "," + "userName" + ":" + userName }; console.log(agentjson);
得到的错误结果:
{"refURL": "/unifiedconfig/config/agent/1234,agentId:2345,firstName:Ganesh,lastName:Putta,userName:ganesh@gmail.com"}
解决方法
方法一:构建对象后转JSON(推荐)
先创建完整的JavaScript对象,再用JSON.stringify()转换为JSON字符串,最后去掉首尾大括号即可。这种方式会自动处理双引号和特殊字符,避免手动拼接的失误:
var skillTargetID = "1234"; var agentId = "2345"; var firstName = "Ganesh"; var lastName = "Putta"; var userName = "ganesh@gmail.com" // 构建完整对象 const agentObj = { refURL: `/unifiedconfig/config/agent/${skillTargetID}`, agentId: agentId, firstName: firstName, lastName: lastName, userName: userName }; // 转成JSON字符串并移除外层大括号 const targetStr = JSON.stringify(agentObj).slice(1, -1); console.log(targetStr);
输出结果:
"refURL":"/unifiedconfig/config/agent/1234","agentId":"2345","firstName":"Ganesh","lastName":"Putta","userName":"ganesh@gmail.com"
方法二:手动拼接字符串(不推荐)
如果一定要手动拼接,需要给每个键和值都添加双引号,可用模板字符串简化拼接逻辑:
var skillTargetID = "1234"; var agentId = "2345"; var firstName = "Ganesh"; var lastName = "Putta"; var userName = "ganesh@gmail.com" const targetStr = `"refURL":"/unifiedconfig/config/agent/${skillTargetID}","agentId":"${agentId}","firstName":"${firstName}","lastName":"${lastName}","userName":"${userName}"`; console.log(targetStr);
⚠️ 注意:这种方法如果值中包含双引号、反斜杠等特殊字符,会直接破坏格式,因此优先使用方法一。
内容的提问来源于stack exchange,提问作者Ganesh Putta
相关产品推荐
相关产品推荐

