|
|
1
281
the JSON specification 不允许尾随逗号。有一些浏览器会允许它,但通常你需要担心所有的浏览器。 通常,我会尝试扭转这个问题,并在实际值之前添加逗号,因此最终的代码如下所示:
for循环中额外的一行代码几乎不贵。。。 当从某种形式的字典将结构输出到JSON时,我使用的另一种方法是,总是在每个条目后附加一个逗号(如上所述),然后在末尾添加一个没有尾随逗号的伪条目(但这只是懒惰;->)。 不幸的是,不能很好地处理数组。 |
|
|
2
137
不是。JSON规范,在 http://json.org ,不允许尾随逗号。据我所见,一些解析器在读取JSON字符串时可能会默默地允许它们,而其他解析器则会抛出错误。对于互操作性,您不应该包括它。
|
|
|
3
112
简单、便宜、易于阅读,无论规格如何,都能正常工作。
给$delim的多余任务付出的代价很小。 如果没有显式循环,只有单独的代码片段,也同样有效。 |
|
|
4
23
|
|
|
5
16
如前所述,JSON规范(基于ECMAScript 3)不允许尾随逗号。ES>=5允许它,所以您可以在纯JS中实际使用该符号。这是有争议的,还有一些解析器 做 http://bolinfest.com/essays/json.html http://whereswalden.com/2010/09/08/spidermonkey-json-change-trailing-commas-no-longer-accepted/ http://json.org/ )是吗 ... 我想知道为什么没有人指出实际上可以在第0次迭代时分割循环并使用 主要的 逗号而不是后面的逗号,以消除比较代码的味道和循环中的任何实际性能开销,从而使代码实际上比提出的其他解决方案更短、更简单、更快(因为循环中没有分支/条件)。 例如(在类似于OP建议代码的C样式伪代码中):
|
|
|
6
11
PHP程序员可能想查看一下 . 这需要一个数组使用字符串将其连接起来。
|
|
|
7
9
有趣的是,C&C++(我认为C,但我不确定)具体允许后面逗号-确切地给出理由:它使编程生成列表变得更容易。不知道为什么JavaScript没有跟随他们。 |
|
|
8
6
使用JSON5。不要使用JSON。
|
|
|
9
3
有一种可能的方法可以避免循环中的if分支。
|
|
|
10
3
|
|
|
11
3
我宁愿申请,也不愿参加辩论俱乐部
还有更大的问题需要解决。。。 |
|
|
12
2
根据 Class JSONArray specification :
因此,据我理解,应该允许它写:
但有些解析器可能会返回7作为项目计数(如Daniel Earwicker指出的IE8),而不是预期的6。
我找到了这个 JSON Validator 对JSON字符串进行验证 RFC 4627 (JavaScript对象表示法的应用程序/json媒体类型)和JavaScript语言规范。实际上,在这里,带尾随逗号的数组仅对JavaScript有效,而对RFC4627规范无效。 然而,RFC 4627规范中规定:
元素之间用逗号分隔 (无需说明特殊情况,如最后一个元素),可以从两个方面理解。 |
|
|
13
1
或者干脆省去逗号
看看轻松的JSON规范,您将看到原始JSON规范有多“嘈杂”。逗号和引号太多了。。。 您还可以使用这个在线RJSON解析器来尝试您的示例,并看到它被正确解析。 http://www.relaxedjson.org/docs/converter.html?source=%5B0%2C1%2C2%2C3%2C4%2C5%2C%5D |
|
14
1
(在Firefox、Chrome、Edge、IE11中运行良好,在IE9、8、7、5中没有let) |
|
|
15
0
根据我过去的经验,我发现不同的浏览器处理JSON中尾随逗号的方式不同。 Firefox和Chrome都能很好地处理它。但IE(所有版本)似乎都崩溃了。我的意思是真的休息一下,别再看剩下的剧本了。 请记住这一点,以及编写兼容代码总是很好这一事实,我建议花费额外的精力确保没有尾随逗号。
|
|
|
16
0
我保留一个当前计数,并将其与总计数进行比较。如果当前计数小于总计数,则显示逗号。 如果在执行JSON生成之前没有总计数,则可能无法工作。 同样,如果您使用的是PHP5.2.0或更高版本,您可以使用内置的JSON API格式化响应。 |
|
|
17
0
不建议这样做,但您仍然可以这样做来解析它。
|
|
|
18
0
由于for循环用于迭代数组或类似的可重用数据结构,因此我们可以使用数组的长度,如图所示,
datafile.txt包含,
|
|
|
19
-1
我通常在数组上循环,并在字符串中的每个条目后附加一个逗号。循环结束后,我再次删除最后一个逗号。 也许不是最好的方法,但比每次检查它是否是循环中的最后一个对象要便宜。 |