问题描述
|
我正在编写一些函数,以构造应该是格式正确的JSON字符串,然后可以将其解析为JSON对象。
我的对象在JSONLint上失败,出现以下错误:
Syntax error,unexpected TINVALID at line 2
[
SERVER: {
ip = 10.10.10.1,port = 8100
},TYPES: [
ssh,shht
]
]
我以为这会给我一个JavaScript对象数组。
即使我这样做(对象而不是数组)也是如此:
{
SERVER: {
ip = 10.10.10.1,shht
]
}
它不起作用,并且出现相同的错误:
我假设有了该对象,我将能够像这样访问一些数据:
var serverIP = myObject.SERVER.ip;
那当然是我想要做的。
提前谢谢了,
乔
解决方法
您与javascript数组混合json对象
这是json格式
{
\"item\":\"value\",\"item2\":\"value\"
}
这将是一个JavaScript数组
[
\"apple\",\"orange\"
]
os,我认为这就是您要寻找的
{
\"SERVER\": {
\"ip\": \"10.10.10.1\",\"port\": 8100
},\"TYPES\": [
\"ssh\",\"shht\"
]
};
,您必须在标识符和字符串值之间使用引号:
这是有效的JSON:
{
\"SERVER\": {
\"ip\": \"10.10.10.1\",\"shht\"
]
}
如果您实际上根本不使用JSON,而只是尝试创建Javascript文字对象,则不应使用JSONLint来检查代码。
这是有效的Javascript:
var myObject = {
SERVER: {
ip: \'10.10.10.1\',port: 8100
},TYPES: [
\'ssh\',\'shht\'
]
};
,这验证:
{
\"SERVER\": {
\"ip\" : \"10.10.10.1\",\"port\" : 8100
},\"shht\"
]
}
您需要在每个字符串周围加上双引号,并且由于它是一个对象,因此需要:
而不是=