尾随逗号会破坏JSON吗?

时间:2016-03-28 15:21:52

标签: javascript json

所以我一直在阅读提议的JavaScript功能,而我关注的是对象文字和数组中的逗号支持。

对于参数,尾随逗号在这里不相关,所以让我们忽略它。我理解版本控制的好处,但我担心它会如何对JSON做出反应。

const arr = [
    'red',
    'green',
    'blue',
];

这将有效。

但是当你返回JSON语法时会发生什么? RFC支持JSON,所以我怀疑JSON是否会支持尾随逗号。也许有一天......

但JavaScript将如何处理返回类似的内容:

const jsonReturn = [{
    "derp":1
}, {
    "foo":"bar"
}, {
    "slide":true,
},];

如果标题内容类型是JSON还是尾随逗号会破坏所有内容,是否会在内部删除尾随逗号?

1 个答案:

答案 0 :(得分:7)

您不会遇到任何问题,因为JSON和JS源彼此无关。

JSON没有(并且为了示例,不会)支持尾随逗号。 The current JSON spec清楚地表明逗号可能只出现在对象或数组中的值之间。

如果JS确实引入了对尾随逗号的支持,则对象的源表示和序列化的版本在很大程度上是不相关的。今天的大多数浏览器都会接受尾随逗号,但所有逗号将在实际对象(dict / hash或struct)表示中被丢弃:

> var foo = {bar: 1, baz: 2,};
< undefined
> foo
< Object {bar: 1, baz: 2}

即使在今天,使用尾随逗号序列化对象也可以正常工作:

> JSON.stringify({bar: 1, baz: 2,})
< "{"bar":1,"baz":2}"

逗号仅用于解析源,在运行时的对象表示中不存在。