JSON数组语法。大括号(对象语法)是否严格必要?

时间:2012-07-10 13:36:46

标签: javascript json

json字符串是否可以只包含方括号?对于前者:

[["state","accepted"],["r_by_uid",1]]

我从解析该字符串中得到意外的字符错误...(很长一段时间以来,我在这个脚本上工作,我认为它之前有效)。

解析json字符串将始终从字符串中创建一个对象?或者是否可以将字符串解析成数组?

基本上我只想将字符串解析为数组,而不是对象 我用Google搜索了一些示例,但无法找到任何仅使用方括号的示例。

这里要求的是包含json字符串的标记:

<button data-fproc='[["state","accepted"],["r_by_uid","1"]]' class="request_state_button">

2 个答案:

答案 0 :(得分:3)

不一定非常需要使用括号括号。

[["state","accepted"],["r_by_uid",1]]是有效的JSON。

JSON文本可以是对象或数组。

请参阅http://json.org/中的https://www.ietf.org/rfc/rfc4627.txt JSON Grammar 部分

您可以在http://jsonlint.com/

验证您的JSON

在Javascript中,JSON.parse()返回一个数组:

JSON.parse('[["state","accepted"],["r_by_uid",1]]')
// result [["state", "accepted"], ["r_by_uid", 1]]

请注意,Arrays也是Javascript中的对象。

它也适用于jQuery.parseJSON()

jQuery.parseJSON('[["state","accepted"],["r_by_uid",1]]')
// result [["state", "accepted"], ["r_by_uid", 1]]

答案 1 :(得分:1)

这可能会解释你的问题:

 var aAsArray = [["state","accepted"],["r_by_uid",1]];
 var aAsString = '[["state","accepted"],["r_by_uid",1]]';

 ​JSON.parse(aAsArray);​​​    //Uncaught SyntaxError: Unexpected token ....
 JSON.parse(aAsString);