在javascript中解析带有转义双引号属性的JSON对象
在对javascript中的对象进行了多次解析后,我仍然无法解析以下查询响应:在javascript中解析带有转义双引号属性的JSON对象,javascript,jquery,parsing,Javascript,Jquery,Parsing,在对javascript中的对象进行了多次解析后,我仍然无法解析以下查询响应: {"messagesProfile": "[{\"message\": \"This is a test message\", \"sender\": \"test@test.com\", \"receiver \": \"test@test.com\"}, {\"message\": \"This is a second test message\", \"sender\": \"test@test.com \",
{"messagesProfile": "[{\"message\": \"This is a test message\", \"sender\": \"test@test.com\", \"receiver
\": \"test@test.com\"}, {\"message\": \"This is a second test message\", \"sender\": \"test@test.com
\", \"receiver\": \"test@test.com\"}, {\"message\": \"This is a third test message\", \"sender\": \"test
@test.com\", \"receiver\": \"test@test.com\"}]", "successProfileMessages": true}
解析上述响应的代码是:
if(data.successProfileMessages === false) {
alert("Failed to retrieve messages");
} else {
if(typeof data.messagesProfile != "undefined" && data.messagesProfile != null && data.messagesProfile.length > 0) {
messages = messages + "<tr>";
messages = messages + "<td>";
messages = messages + "There are no messages yet!";
messages = messages + "</td>";
messages = messages + "<td>";
} else {
// Successfully retrieved messages
for(var i in data) {
messages = messages + "<tr>";
messages = messages + "<td>";
messages = messages + data.messagesProfile.sender[i];
messages = messages + "</td>";
messages = messages + "<td>";
messages = messages + data.messagesProfile.message[i];
messages = messages + "</td>";
messages = messages + "</tr>";
}
}
}
data
的messageProfile属性是一个字符串,因此需要对其进行解析
您可以在else
子句中执行此操作
var arrayResult = JSON.parse(data.messagesProfile);
for (var i = 0, len = arrayResult.length; i < len; i++) {
var item = arrayResult[i];
// do your stuff
}
var arrayResult=JSON.parse(data.messagesProfile);
对于(变量i=0,len=arrayResult.length;i对于在数组上迭代,我不鼓励使用
For(arrayResult中的var i)
,因为它不会给出所需的结果。它将遍历对象的所有属性(包括长度属性!!!!!)定义“有问题”?在迭代数据之前,我假设您首先使用JSON.parse()
进行解析?是的,响应使用JSON.parse()进行解析,但仍然使用if中的第一个分支。该代码假设您的JSON已被解析。我认为你的问题首先与JSON无关,你可能只是想遍历JavaScript数据结构。删除JSON标记。就这样做了。我把if搞砸了。
var arrayResult = JSON.parse(data.messagesProfile);
for (var i = 0, len = arrayResult.length; i < len; i++) {
var item = arrayResult[i];
// do your stuff
}