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

时间:2014-09-08 09:32:24

标签: javascript json

远程服务器(在我的控制之外)发送一个JSON字符串,其中包含所有字段名和值的转义。 例如,当我执行JSON.stringify(res)时,结果如下:

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

现在当我发出警报(res.orderId)时,它表示未定义。我认为这是因为逃脱了。 我该如何解决这个问题?

5 个答案:

答案 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的类型...