远程服务器(不在我的控制范围内)发送一个JSON字符串,该字符串具有所有转义的字段名和值。例如,当我执行JSON.stringify(res)时,结果如下:
"{\"orderId\":\"123\"}"
现在,当我执行alert(res.orderId)时,它说未定义。我认为是因为逃脱了。我该如何解决?
假设这 是显示 的实际值,请考虑:
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值(这是一个 字符串 ,因为JSON 是text )将如何产生该twice_json值。进一步考虑obj( JavaScript object )和json(JSON string )之间的关系。
json
twice_json
obj
也就是说,如果帖子中显示的结果是的输出,JSON.stringify(res)那么res 已经 是JSON(它是 text / string ),而 不是 JavaScript对象-因此,不要在已经为JSON的值上调用stringify!而是obj = JSON.parse(res); obj.orderId根据上面的演示/转换使用。
JSON.stringify(res)
obj = JSON.parse(res); obj.orderId