当手动生成JSON对象或数组时,通常更容易在对象或数组的最后一项上留下逗号。例如,从字符串数组输出的代码可能像这样(在c++中像伪代码):
s.append("[");
for (i = 0; i < 5; ++i) {
s.appendF("\"%d\",", i);
}
s.append("]");
给你一个字符串
[0,1,2,3,4,5,]
这是允许的吗?
当手动生成JSON对象或数组时,通常更容易在对象或数组的最后一项上留下逗号。例如,从字符串数组输出的代码可能像这样(在c++中像伪代码):
s.append("[");
for (i = 0; i < 5; ++i) {
s.appendF("\"%d\",", i);
}
s.append("]");
给你一个字符串
[0,1,2,3,4,5,]
这是允许的吗?
当前回答
如上所述,这是不允许的。但在JavaScript中,这是:
var a = Array()
for(let i=1; i<=5; i++) {
a.push(i)
}
var s = "[" + a.join(",") + "]"
(在Firefox, Chrome, Edge, IE11中工作良好,并且在IE9, 8,7,5中没有let)
其他回答
简单,便宜,易于阅读,并且无论规格如何都能正常工作。
$delimiter = '';
for .... {
print $delimiter.$whatever
$delimiter = ',';
}
对$delim的冗余赋值代价很小。 如果没有显式的循环,而是单独的代码片段,也同样有效。
使用relax JSON,您可以使用后面的逗号,也可以不使用逗号。它们是可选的。
在解析类似json的文档时,完全没有必要使用逗号。
看一看relax JSON规范,你会发现原始JSON规范是多么“嘈杂”。太多的逗号和引号……
http://www.relaxedjson.org
您还可以使用这个在线RJSON解析器尝试您的示例,并查看它是否被正确解析。
http://www.relaxedjson.org/docs/converter.html?source=%5B0%2C1%2C2%2C3%2C4%2C5%2C%5D
不。在http://json.org中维护的JSON规范不允许后面有逗号。据我所知,一些解析器在读取JSON字符串时可能会默默地允许它们,而其他解析器则会抛出错误。对于互操作性,不应该包含它。
上面的代码可以重新构造,可以在添加数组结束符时删除后面的逗号,也可以在项之前添加逗号,对第一个项跳过逗号。
PHP程序员可能需要检查implode()。它接受一个数组,使用字符串将其连接起来。
从医生那里…
$array = array('lastname', 'email', 'phone');
echo implode(",", $array); // lastname,email,phone
不。https://json.org中的“铁路图”是规范的精确翻译,并明确表示a,总是在值之前,而不是直接在值之前]:
或}: