我收到此错误消息:
SyntaxError:JSON.parse:在JSON数据的第4行第18列的数组元素后面的'expected','或']'。
我认为这是因为我在一个数组中有一个对象,也许这是不允许的。但我需要经验丰富的开发人员对此进行确认。你能把对象放在json中的数组吗?
HTML
<div id="ex1"><h2>Example 1</h2><p></p><h4>results:</h4></div>
的Javascript
var message;
(function loadAjax()
{ var request;
if (window.XMLHttpRequest)
{
request = new XMLHttpRequest();
}
else{
request = new ActiveXObject('Microsoft,XMLHTTP');
}
request.open('GET','human.json');
request.onreadystatechange = function()
{
if(request.readyState == 4 && request.status == 200)
{
message = request.responseText;
var obj = JSON.parse(message);
var text = obj.job[0].hospital;
attach('ex1',text,'p');
}
}
request.send();
})();
JSON
{
"sex":{"male":{"fname":["Michael","Tom"]} ,"female":{"fname":["Alice","Katie"]}},
"age":[16,80],
"job":["medical":{"hospital": "doctor"}, "education":{"school":"teacher"} ]
}
答案 0 :(得分:3)
这是不正确的:
"job":["medical":{"hospital": "doctor"}, "education":{"school":"teacher"} ]
这是正确的:
"job": {"medical": {"hospital": "doctor"}, "education": {"school": "teacher"} }
注意我已将[]
更改为{}
方括号用于数组(许多单独的项目)。例如:
{ "my_array": [1, 2, "three"] } <-- Notice that the items in square brackets
so not assign a value such as "key": "value"
Curlies用于关联条目(许多"key": "value"
个项目)。例如:
{ "my_association": { "dogs": "rule", "cats": "drool" } }
请参阅JSON.org以了解有关JSON正确语法的更多信息。
答案 1 :(得分:0)
您的job
属性包含无效的类关联数组,其中包含类似对象的键,例如medical
和education
。有效数组的示例是具有age
键的属性。 job
属性应该包含一个对象而不是数组。
JavaScript数组只是一个没有显式键的值列表(["foo", "bar"]
)。如果您需要key:value
对,请使用对象({"a" : "foo", "b" : "bar"}
)。
顺便说一下,自动生成JSON(非手动)通常是有意义的,例如: G。使用PHP的内置函数json_encode()
,以便生成的JSON代码保证有效。
答案 2 :(得分:0)
您需要更正:
{
"sex":{"male":{"fname":["Michael","Tom"]} ,"female":{"fname":["Alice","Katie"]}},
"age":[16,80],
"job":["medical":{"hospital": "doctor"}, "education":{"school":"teacher"} ]
}
为:
{
"sex":{"male":{"mname":["Michael","Tom"]},"female":{"fname":["Alice","Katie"]}},
"age":[16,80],
"job":[{"medical":{"hospital":"doctor"}},{"education":{"school":"teacher"}}]
}
如果你真的想要保留你对结构的最初想法&amp;访问。