当手动生成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,]
这是允许的吗?
当前回答
PHP程序员可能需要检查implode()。它接受一个数组,使用字符串将其连接起来。
从医生那里…
$array = array('lastname', 'email', 'phone');
echo implode(",", $array); // lastname,email,phone
其他回答
简单,便宜,易于阅读,并且无论规格如何都能正常工作。
$delimiter = '';
for .... {
print $delimiter.$whatever
$delimiter = ',';
}
对$delim的冗余赋值代价很小。 如果没有显式的循环,而是单独的代码片段,也同样有效。
不。在http://json.org中维护的JSON规范不允许后面有逗号。据我所知,一些解析器在读取JSON字符串时可能会默默地允许它们,而其他解析器则会抛出错误。对于互操作性,不应该包含它。
上面的代码可以重新构造,可以在添加数组结束符时删除后面的逗号,也可以在项之前添加逗号,对第一个项跳过逗号。
有趣的是,C和c++(我认为还有c#,但我不确定)都特别允许后面有逗号——原因正是:它使以编程方式生成列表更容易。不知道为什么JavaScript没有效仿他们。
使用JSON5。不要使用JSON。
对象和数组可以以逗号结尾 如果对象键是有效的标识符,则可以不加引号 字符串可以使用单引号 字符串可以被分割成多行 数字可以是十六进制(以16为基数) 数字可以以小数点(前导或后导)开始或结束。 数字可以包括∞和-∞。 数字可以以显式的加号(+)开头。 内联(单行)和块(多行)注释都是允许的。
http://json5.org/
https://github.com/aseemk/json5
我保持当前的计数,并将其与总计数进行比较。如果当前计数小于总计数,则显示逗号。
如果在执行JSON生成之前没有总计数,则可能无法工作。
同样,如果您使用的是PHP 5.2.0或更高版本,则可以使用内置的JSON API格式化响应。