2

通常,我看到的是{"attribute":241241}

但是写这个完全一样:{attribute:241241}

{attribute:241241}认为是不好的做法,是否应该避免?

4

4 回答 4

5

{attribute:241241}不使用JSONLint进行验证,所以是的,这是不好的做法,应该避免。

此外,如果您查看json.org上的 JSON 规范,您会发现对象的第一个值始终是字符串(由双引号表示)。

于 2013-07-30T23:14:40.553 回答
1

JSON 规范要求引用键,因此第二种形式不是有效的 JSON 。

正如 Snakes 和 Coffee 所指出的,它是一个有效的 Javascript 对象文字(JSON 是基于它的),一些 JSON 解析器无论如何都会接受它。所以它在某些情况下可能会起作用,但迟早你会遇到一个功能完美的 JSON 解析器,它会拒绝你的非引用键,因为它们在规范中是无效的。

于 2013-07-30T23:18:04.470 回答
1

您在 Javascript 中将 JSON 与 Object 文字语法混淆了

var o = {
    "attribute":241241
};

不是JSON,而是对象文字是的,引号在那里毫无用处。

于 2013-07-30T23:18:32.037 回答
1

根据此处的规范,名称/值对中的名称必须是 type string

对象是零个或多个名称/值对的无序集合,其中名称是字符串,值是字符串、数字、布尔值、null、对象或数组。

于 2013-07-30T23:17:55.783 回答