这是一个正确的JSON数据结构吗?

时间:2010-01-23 05:53:05

标签: php json

我已将我的php结果数组转换为json。现在我想知道这是正确的json格式。我的代码echo json_encode($row); 我必须使用jquery auto complete plugin ...

{"0":"1","id":"1","1":"Albania","country":"Albania"} 
{"0":"2","id":"2","1":"Algeria","country":"Algeria`"}
{"0":"3","id":"3","1":"Angola","country":"Angola"}
{"0":"4","id":"4","1":"Anguilla","country":"Anguilla"}
{"0":"5","id":"5","1":"Antigua","country":"Antigua"}
{"0":"6","id":"6","1":"Argentina","country":"Argentina"}
{"0":"7","id":"7","1":"Armenia","country":"Armenia"}
{"0":"8","id":"8","1":"Aruba","country":"Aruba"}
{"0":"9","id":"9","1":"Australia","country":"Australia"}
{"0":"10","id":"10","1":"Austria","country":"Austria"}
{"0":"11","id":"11","1":"Azerbaijan","country":"Azerbaijan"}
0":"26","id":"26","1":"Bulgaria","country":"Bulgaria"}
{"0":"27","id":"27","1":"Burkina Faso","country":"Burkina Faso"}

4 个答案:

答案 0 :(得分:7)

每个对象需要包含在[]中,并且需要comma之间的其他对象,

包含保加利亚的对象就像这样打破了

0":"26","id":"26","1":"Bulgaria","country":"Bulgaria"}

应该是

{"0":"26","id":"26","1":"Bulgaria","country":"Bulgaria"}

正确一个就像

[{"0":"1","id":"1","1":"Albania","country":"Albania"},
{"0":"2","id":"2","1":"Algeria","country":"Algeria`"},
{"0":"3","id":"3","1":"Angola","country":"Angola"},
{"0":"4","id":"4","1":"Anguilla","country":"Anguilla"},
{"0":"5","id":"5","1":"Antigua","country":"Antigua"},
{"0":"6","id":"6","1":"Argentina","country":"Argentina"},
{"0":"7","id":"7","1":"Armenia","country":"Armenia"},
{"0":"8","id":"8","1":"Aruba","country":"Aruba"},
{"0":"9","id":"9","1":"Australia","country":"Australia"},
{"0":"10","id":"10","1":"Austria","country":"Austria"},
{"0":"11","id":"11","1":"Azerbaijan","country":"Azerbaijan"},
{"0":"26","id":"26","1":"Bulgaria","country":"Bulgaria"},
{"0":"27","id":"27","1":"Burkina Faso","country":"Burkina Faso"}]

答案 1 :(得分:2)

取自PHP Manual

真正的json对象将被包装在{}中,而json数组将被包装,就像Ignacio在[]中所说的那样。

此外,您可以使用json_encode中的选项强制格式化。检查您的插件,看它是否指定了它们所需的格式。

修改

在仔细查看对象后,您可能想要做的是将每一行放入一个数组中,然后对该数组进行json_encode。

$json = array();
while($row = mysql_fetch_array($query)){
   $json[] = $row;
}

echo json_encode($json);

现在,看起来你正在为每一行输出不同的json对象。

答案 2 :(得分:1)

不。物体需要在顶部容器中,例如, [{...},{...},...]

答案 3 :(得分:0)

JSON验证的绝佳资源:http://www.jsonlint.com/