可以在JSON对象中使用尾随逗号吗?

2024-10-02 02:34:56 发布

您现在位置:Python中文网/ 问答频道 /正文

手动生成JSON对象或数组时,在对象或数组的最后一项上留下逗号通常更容易。例如,从字符串数组输出的代码可能看起来像(在C++中类似伪代码):

s.append("[");
for (i = 0; i < 5; ++i) {
    s.appendF("\"%d\",", i);
}
s.append("]");

给你一根像

[0,1,2,3,4,5,]

允许这样做吗


Tags: 对象字符串代码jsonfor数组手动逗号
3条回答

不幸的是the JSON specification不允许尾随逗号。有一些浏览器会允许它,但通常你需要担心所有的浏览器

通常,我会尝试扭转这个问题,并在实际值之前添加逗号,因此最终的代码如下所示:

s.append("[");
for (i = 0; i < 5; ++i) {
  if (i) s.append(","); // add the comma only if this isn't the first entry
  s.appendF("\"%d\"", i);
}
s.append("]");

for循环中额外的一行代码几乎不贵

当从某种形式的字典将结构输出到JSON时,我使用的另一种方法是,总是在每个条目后附加一个逗号(如上所述),然后在末尾添加一个没有尾随逗号的伪条目(但这只是懒惰;->;)

不幸的是,不能很好地处理数组

简单、便宜、易于阅读,无论规格如何,都能正常工作

$delimiter = '';
for ....  {
    print $delimiter.$whatever
    $delimiter = ',';
}

给$delim的多余任务付出的代价很小。 如果没有显式循环,只有单独的代码片段,也同样有效

不可以。JSON规范在http://json.org处维护,不允许使用尾随逗号。据我所见,一些解析器在读取JSON字符串时可能会默默地允许它们,而其他解析器则会抛出错误。对于互操作性,您不应该包括它

可以重新构造上面的代码,在添加数组终止符时删除尾随的逗号,或者在项目之前添加逗号,跳过第一个项目的逗号

相关问题 更多 >

    热门问题