如何使用JSON.stringify提取变量并向API传递符合要求的参数
实现方法
你当前的代码存在两个核心偏差,直接修复即可:
- 单引号包裹的字符串里,JS不会自动识别嵌入的变量——你写的
'{"emailAddress" : email,"firstName" : name, "question" : text}'会被当成纯文本,最终传出去的就是字面的email、name、text字符串,根本读不到你提前定义的变量值 - 序列化层级完全搞错了:API要求的
sessionInformation属性本身的值,就是一段序列化后的JSON字符串,不是嵌套的普通对象
正确实现逻辑
全程不需要手动拼带转义符的JSON内容,按顺序做两层序列化即可:
- 先把需要存在
sessionInformation里的内容,写成普通的JS对象,直接填入提取的真实变量值 - 把这个内层对象单独用
JSON.stringify转成字符串,作为外层请求对象sessionInformation属性的值 - 最后对外层的整个请求对象做一次序列化,就完全符合API的格式要求
正确代码示例
// 从现有对象提取变量,注意语句结尾用分号,避免语法报错 const email = some.value; const name = some.value; const text = some.value; // 构造内层待序列化的普通数据对象 const sessionInnerData = { emailAddress: email, firstName: name, question: text }; // 构造外层请求对象,sessionInformation赋值为内层对象序列化后的字符串 const requestPayload = { sessionInformation: JSON.stringify(sessionInnerData) }; // 对整个外层请求对象做序列化,得到最终传给API的raw值 const raw = JSON.stringify(requestPayload);
运行上述代码得到的raw,解析后和API要求的格式完全一致,且所有特殊字符的转义都由JSON.stringify自动处理,不会出现手动拼字符串导致的引号不匹配、转义遗漏问题。
内容的提问来源于stack exchange,提问作者CodeG
相关产品推荐
相关产品推荐

