尝试从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>
答案 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