远程服务器(在我的控制之外)发送一个JSON字符串,其中包含所有字段名和值的转义。 例如,当我执行JSON.stringify(res)时,结果如下:
"{\"orderId\":\"123\"}"
现在当我发出警报(res.orderId)时,它表示未定义。我认为这是因为逃脱了。 我该如何解决这个问题?
答案 0 :(得分:25)
假设 显示的实际值,请考虑:
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 是文本)会导致{{1}价值。进一步考虑twice_json
(一个 JavaScript对象)和obj
(JSON 字符串)之间的关系。
也就是说,如果帖子中显示的结果是json
的输出,则res 已经 JSON( text / a string )和不一个JavaScript对象 - 所以不要在已经JSON值上调用stringify!而是按照上面的演示/转换使用JSON.stringify(res)
。
答案 1 :(得分:1)
它实际上是一个在其上执行JSON.stringufy的对象。
var jsonString = "{\"orderId\":\"123\"}";
var jsonObject = JSON.parse(jsonString);
console.log(jsonObject.orderId);
或者你做的比这简单
var jsonObject = JSON.parse("{\"orderId\":\"123\"}");
console.log(jsonObject.orderId);
答案 2 :(得分:0)
您可以使用JSON.parse,我真的不知道该API为您返回的内容,因此我无法为您提供替代方案。
var res = "{\"orderId\":\"123\"}";
res = JSON.parse(res);
alert(res.orderId);
答案 3 :(得分:0)
接受的答案对我不起作用。 我用
json = json.replace(/\\/g,"");
let arrayObj = JSON.parse(json);
答案 4 :(得分:-1)
你真的需要字符串化你的数据不能juste使用json.orderId吗?你说送你一个json字符串?如果您的json已经在字符串中,则不必执行stringify ....如果您有chrome调试器或其他浏览器调试器,则可以看到var的类型...