一尘不染

如何修复转义的JSON字符串(JavaScript)

json

远程服务器(不在我的控制范围内)发送一个JSON字符串,该字符串具有所有转义的字段名和值。例如,当我执行JSON.stringify(res)时,结果如下:

"{\"orderId\":\"123\"}"

现在,当我执行alert(res.orderId)时,它说未定义。我认为是因为逃脱了。我该如何解决?


阅读 785

收藏
2020-07-27

共1个答案

一尘不染

假设这 是显示 的实际值,请考虑:

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值。进一步考虑objJavaScript object )和json(JSON string
)之间的关系。

也就是说,如果帖子中显示的结果是的输出,JSON.stringify(res)那么res 已经 是JSON(它是 text / string
),而 不是 JavaScript对象-因此,不要在已经为JSON的值上调用stringify!而是obj = JSON.parse(res); obj.orderId根据上面的演示/转换使用。

2020-07-27