jQuery.parseJSON()无效的字符错误

时间:2013-11-16 17:34:45

标签: javascript jquery json

将字符串解析为JSon时我得到“无效字符错误”,但不知道原因.. 请帮帮我,这是我的代码

var data = $.parseJSON({ "senderEmail": "Email@gmail.com", "RecieverEmail": "alll", "Message": "j", "DateAndTime": "2013"});
            for (var i = 0; i < data.length; i++) {
                console.log("--------------------");

                console.log(data[i].SenderEmail);
                console.log(data[i].RecieverEmail);
                console.log(data[i].DateTime);
                console.log(data[i].Message);

            }

4 个答案:

答案 0 :(得分:4)

首先:你已经有了一个JSON对象,jQuery.parseJSON()将一个字符串作为输入。

第二:要访问data[i]属性,您还必须传递一个对象列表。

所以:

var data = $.parseJSON('[{"senderEmail": "Email@gmail.com", "ReceiverEmail": "alll", "Message": "j", "DateAndTime": "2013"}]');

for (var i = 0; i < data.length; i++) {
    // Now you can access data[i] properties as you want...
}

答案 1 :(得分:3)

JSON是一个字符串,它是使用JS文字语法子集的序列化数据。

在您的示例中,您没有将字符串传递给parseJSON,而是传递了一个对象字面值。

你想:

var data = $.parseJSON('{"senderEmail": "Email@gmail.com", "RecieverEmail": "alll", "Message": "j", "DateAndTime": "2013"}');

答案 2 :(得分:1)

这已经是一个对象(没有quotes),而不是json字符串,因此无需解析

{
    "senderEmail": "Email@gmail.com",
    "RecieverEmail": "alll",
    "Message": "j",
    "DateAndTime": "2013"
}

json字符串应该是这样的

'{ "senderEmail": "Email@gmail.com", "RecieverEmail": "alll", "Message": "j", "DateAndTime": "2013"}'

请注意quotes '{...}'。这是循环对象的an examplethis example显示了如何在从json字符串解析对象后循环对象,看看差异。

因此,如果您的数据已经是对象,那么您不需要使用$.parseJSON,因为它只是将json字符串转换为JavaScript对象,但如果这是{ {1}}字符串json然后解析它(将'{...}'字符串转换为对象)然后循环它。 json表示jsonJavaScript Object Notation字符串只是字符串中的json对象(JavaScript而不是真正的对象),并使其成为真实的{ {1}}我们需要先解析对象,除非我们不能将其用作'{...}'

详细了解json.org

答案 3 :(得分:1)

首先,您尝试解析JSON本身,它不是字符串

var data = $.parseJSON('[{ "senderEmail": "Email@gmail.com", "RecieverEmail": "alll",   "Message": "j", "DateAndTime": "2013"}]');
  for (var i = 0; i < data.length; i++) {
  console.log("--------------------");
  console.log(data[i].senderEmail);
  console.log(data[i].RecieverEmail);
  console.log(data[i].Message);
  console.log(data[i].DateAndTime);
};