Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中解析带有转义双引号属性的JSON对象_Javascript_Jquery_Parsing - Fatal编程技术网

在javascript中解析带有转义双引号属性的JSON对象

在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 \",

在对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
\", \"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
}