0

問題が発生しています。私は以下のようなjsonコードを持っています。それらを解析したいのですが、エラーが発生します:SyntaxError:JSON.parse:予期しない文字エラーがどこにあるのかわかりません。誰か助けてくれませんか?

私のjsコード:

  function retreive() {
  var userInfo = new Array();
  userInfo[0] = $("#contactId").val();
  userInfo[1] = $("#pw").val();
  var cId = $.ajax({ 
    url: "server.php", 
    type: "POST", 
data: {phpData : userInfo}, 
    datatype: "json",
success:function(msg) {
    responseJson = JSON.parse(msg.responseText);
var outputHtml = "";
    for (var i=0; i<responseJSON.user.mary.length; i++) {
outputHtml += responseJSON.user.mary[i].sender[i].sendDate + 
", " + responseJSON.user.mary[i].sender[i].time + 
", " + responseJSON.user.mary[i].sender[i].timezone + 
", " + responseJSON.user.mary[i].sender[i].message + "<br/>"}
divMessage = document.getElementById("message");
    divMessage.innerHTML = outputHtml;
}
});   

}

私のphpコード:

    $data = '{
  "user" : 
    [
      {
    "mary" :
      [
        {
          "sender1" :
        [
              {
                "sendDate"     : "2012-01-13",
                "time"     : "15:00:21",
                "timezone" : "Asia/Hong_Kong",
                "message"  : "hi"
          },
          {
                "sendDate"     : "2012-01-18",
                "time"     : "16:00:01",
                "timezone" : "Asia/Hong_Kong",
            "message"  : "how are you"
              },
              {
                "sendDate"     : "2012-01-21",
                "time"     : "14:31:42",
                "timezone" : "Asia/Hong_Kong",
            "message"  : "good"
          }  
        ],
          "sender2" :
        [
          {
                "sendDate"     : "2012-01-14",
                "time"     : "09:01:25",
                "timezone" : "Asia/Hong_Kong",
                "message"  : "good morning"
          },
              {
                "sendDate"     : "2012-01-14",
                "time"     : "09:03:41",
            "timezone" : "Asia/Hong_Kong",
                "message"  : "where are you"
          },
          {
                "sendDate"     : "2012-01-14",
                "time"     : "09:05:42",
                "timezone" : "Asia/Hong_Kong",
                "message"  : "me too"
          }
            ],
        }  
      ],    
    "peter" :
      [
        {
          "sender1" :
            [         
              {
                "sendDate"     : "2012-01-13",
                "time"     : "10:44:28",
            "timezone" : "Asia/Hong_Kong",
                "message"  : "hey man"
          },
          {
                "sendDate"     : "2012-01-13",
                "time"     : "10:46:11",
                "timezone" : "Asia/Hong_Kong",
                "message"  : "what are you doing"
              },
              {
                "sendDate"     : "2012-01-13",
                "time"     : "10:48:33",
                "timezone" : "Asia/Hong_Kong",
                "message"  : "nice"
          }
        ],
          "sender3" :
            [
              {
                "sendDate"     : "2012-01-18",
                "time"     : "14:23:58",
            "timezone" : "Asia/Hong_Kong",
                "message"  : "Had you send the file to me"
              },
          {
                "sendDate"     : "2012-01-18",
                "time"     : "15:01:39",
            "timezone" : "Asia/Hong_Kong",
                "message"  : "i have not receive yet"
          },
              {
                "sendDate"     : "2012-01-19",
                "time"     : "09:08:32",
                "timezone" : "Asia/Hong_Kong",
                "message"  : "received"
          },
        ],  
        }
      ],
      }
    ],
}';
echo $data;
4

2 に答える 2

8

エラーが示すように、JSON が無効です。

http://jsonlint.com/

JSON を手動で構築することは、本当に悪い考えです。構築するのははるかに難しく、解析エラーが発生しやすくなります。代わりに、配列またはオブジェクトとしてプログラムでデータを作成してから、json_encode().

于 2012-08-01T12:41:12.730 に答える
2

JSON Lintはあなたの友達です。これを使用して、json の潜在的なエラーを見つけます。

45 行目の解析エラー:
...}]、   
----------------------^
「STRING」が必要です
于 2012-08-01T12:41:52.967 に答える