使用JSON.stringify解析JSON字符串

时间:2018-03-20 21:12:23

标签: javascript jquery json

尝试从AWS SQS解析JSON内容。

首先将字符串转换为JSON String,然后转换为JSON Object。处理这种情况的正确方法是什么?

<script>

// JSON from SQS 
var x='{"Message":"{\"default\":{\\\"key1\\\":\\\"value1\\\",\\\"key2\\\":\\\"value2\\\"}\"}","Timestamp":"2018-03-20T03:21:32.136Z"}';
x1=JSON.stringify(x);
var obj = JSON.parse(x1);
console.log(obj.Message); // undefined
alert(obj["Message"]); // undefined 
</script>

2 个答案:

答案 0 :(得分:1)

字符串不正确。它应该像

var x='{"Message":"{\\\"default\\\":{\\\"key1\\\":\\\"value1\\\",\\\"key2\\\":\\\"value2\\\"}\\\"}","Timestamp":"2018-03-20T03:21:32.136Z"}';

您正在对x进行字符串化,这已经是字符串

x1=JSON.stringify(x); //Not ok

答案 1 :(得分:1)

我完全不知道为什么你要尝试JSON.stringify()一个字符串。它已经是一个字符串了!

您获得的字符串也不是有效的JSON,并且需要额外的\\个。你是从哪里得到的?或者这是一个错字。

var x='{"Message":"{\\\"default\\\":{\\\"key1\\\":\\\"value1\\\",\\\"key2\\\":\\\"value2\\\"}\\\"}","Timestamp":"2018-03-20T03:21:32.136Z"}';
                    ^__________^_____________________________________________________________^

只需解析你所拥有的JSON,然后意识到obj.Message只是更多JSON,可能是JSON.parse() d

// JSON
var x = '{"Message":"{\\\"default\\\":{\\\"key1\\\":\\\"value1\\\",\\\"key2\\\":\\\"value2\\\"}\\\"}","Timestamp":"2018-03-20T03:21:32.136Z"}';
//Parse JSON
var obj = JSON.parse(x);
console.log(obj.Message); // string formatted as yet more JSON