当手动生成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,]
这是允许的吗?
当前回答
不。https://json.org中的“铁路图”是规范的精确翻译,并明确表示a,总是在值之前,而不是直接在值之前]:
或}:
其他回答
我通常循环遍历数组,并在字符串中的每个条目后附加一个逗号。循环结束后,我再次删除最后一个逗号。
也许不是最好的方法,但比每次检查它是否是循环中的最后一个对象要便宜一些。
有一种可能的方法可以避免循环中的if分支。
s.append("[ "); // there is a space after the left bracket
for (i = 0; i < 5; ++i) {
s.appendF("\"%d\",", i); // always add comma
}
s.back() = ']'; // modify last comma (or the space) to right bracket
使用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
不。https://json.org中的“铁路图”是规范的精确翻译,并明确表示a,总是在值之前,而不是直接在值之前]:
或}:
String l = "[" + List<int>.generate(5, (i) => i + 1).join(",") + "]";