将字符串解析为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);
}
答案 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 example,this example显示了如何在从json
字符串解析对象后循环对象,看看差异。
因此,如果您的数据已经是对象,那么您不需要使用$.parseJSON
,因为它只是将json
字符串转换为JavaScript
对象,但如果这是{ {1}}字符串json
然后解析它(将'{...}'
字符串转换为对象)然后循环它。 json
表示json
,JavaScript 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);
};