远程服务器(不受我控制)发送一个 JSON 字符串,其中所有字段名和值都已转义。 例如,当我执行 JSON.stringify(res) 时,结果如下:
"{\"orderId\":\"123\"}"
现在,当我执行 alert(res.orderId) 时,它显示未定义。我认为这是因为逃脱了“s。 我该如何解决这个问题?
最佳答案
假设是显示的实际值然后考虑:
twice_json = '"{\\"orderId\\":\\"123\\"}"' // (ingore the extra slashes)
json = JSON.parse(twice_json) // => '{"orderId":"123"}'
obj = JSON.parse(json) // => {orderId: "123"}
obj.orderId // => "123"
请注意如何将 JSON.stringify 应用于 json
值(这是一个 string,因为 JSON 是文本)将导致 twice_json
值。进一步考虑 obj
(一个 JavaScript 对象)和 json
(JSON string)之间的关系。
也就是说,如果帖子中显示的结果是 JSON.stringify(res)
的输出,那么 res 已经是 JSON(即 text/一个字符串) 而不是 JavaScript 对象 - 所以不要在已经是 JSON 的值上调用 stringify!相反,使用 obj = JSON.parse(res); obj.orderId
,根据上述演示/转换。
关于javascript - 如何修复转义的 JSON 字符串 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25721164/