Javascript JSON对象被视为字符串
我有一个ajax调用,返回以下JSON:Javascript JSON对象被视为字符串,javascript,json,Javascript,Json,我有一个ajax调用,返回以下JSON: returnedData = "[ { id: 1, firstName: 'John', lastName: 'Smith', address: '123 Spa Road', city: 'London', orders: [ { product: 'TV', price: 599.99, quantity: 2, orderTotal: 1199.98 } ]
returnedData = "[
{ id: 1, firstName: 'John', lastName: 'Smith', address: '123 Spa Road', city: 'London',
orders:
[
{ product: 'TV', price: 599.99, quantity: 2, orderTotal: 1199.98 }
]
}
]";
var customers = JSON.parse (returnedData);
console.log(customers.length); // prints length of the string data
它将其视为字符串。但是,我可以直接指定结果
var customers = [
{ id: 1, firstName: 'John', lastName: 'Smith', address: '123 Spa Road', city: 'London',
orders:
[
{ product: 'TV', price: 599.99, quantity: 2, orderTotal: 1199.98 }
]
}
];
console.log(customers.length); // prints 1 - the number of objects
为什么是这样?如何动态分配它?运行代码,您将发现代码中有错误
将对象文字粘贴到您将看到的验证器中
Parse error on line 2:
[ { id: 1, first
--------------^
Expecting 'STRING', '}'
在名称和字符串值周围需要有双引号 必须用双引号将属性括起来:
var returnedData = '[{ "id": 1, "firstName": "John"}]';
returnedData
不是有效的JSON消息(属性没有用双引号括起来),但您可以将其视为JS消息
var customers = eval(returnedData);
如果要使用
JSON.parse
,请更正returnedData
接收的字符串不是有效的JSON对象。小心不要混淆JSON和JavaScript。看看这个例子:
var returnedData = '[ { "id": 1, "firstName": "John", "lastName": "Smith", "address": "123 Spa Road", "city": "London", "orders": [ { "product": "TV", "price": 599.99, "quantity": 2, "orderTotal": 1199.98 } ] } ]';
var customers = JSON.parse (returnedData);
console.log(customers.length); // the correct length now.
请注意,唯一的区别是我将字典中的键放在“'s”内。您的字符串有问题 这是格式良好的json
var returnedData ='[
{
"id": 1,
"firstName": "John",
"lastName": "Smith",
"address": "123SpaRoad",
"city": "London",
"orders": [
{
"product": "TV",
"price": 599.99,
"quantity": 2,
"orderTotal": 1199.98
}
]
}
]';
单引号必须转义或不使用它们…您可以在打开和关闭字符串时使用它们,这样它比其他posibilitys格式更好(由于@Victor Canova的有用注释而被更正)不确定
的意思是将长度打印为字符串
按照编写代码的方式,它只会返回错误。”未捕获的语法错误:意外标记非法“这不是有效的JSON。它是有效的Javascript文本,但不是JSON。代码甚至不是有效的Javascript,因为JS中不能有多行字符串。[{“id”:1,“firstName”:“John”,“lastName”:“Smith”,“address”:“123 Spa Road”,“city”:“London”,“orders”:[{“product”:“TV”,“price”:599.99,”quantity“:2,“orderTotal“:1199.98}]}]
是有效的JSON数据。谢谢。这就是我缺少的。你可以在这里检查你的JSON代码:只是好奇,“不允许单引号”你的意思是,如果在JSON中使用,它们必须被替换,对吗?