让我们评估每个的解析:
http://jsfiddle.net/brandonscript/Y2dGv/
var json1 = '{}';var json2 = '{"myCount": null}';var json3 = '{"myCount": 0}';var json4 = '{"myString": ""}';var json5 = '{"myString": "null"}';var json6 = '{"myArray": []}';console.log(JSON.parse(json1)); // {}console.log(JSON.parse(json2)); // {myCount: null}console.log(JSON.parse(json3)); // {myCount: 0}console.log(JSON.parse(json4)); // {myString: ""}console.log(JSON.parse(json5)); // {myString: "null"}console.log(JSON.parse(json6)); // {myArray: []}该 TL;博士 在这里:
json2 变量中的片段是JSON规范所表示的方式
null。但是,一如既往,这取决于您的工作-
有时,“正确”的做法并不总是适合您的情况。使用您的判断并做出明智的决定。
JSON1{}
这将返回一个空对象。那里没有数据,只会告诉您您要寻找的任何键(无论是键还是其他键
myCount)都是type
undefined。
JSON2{"myCount": null}
在这种情况下,
myCount实际上是定义了,尽管其值为
null。这是 不
一样的两个“不
undefined,不
null”,如果你是一个条件或其他测试,这可能会成功,而JSON1会失败。
这是
null按照JSON规范表示的确定方式。
JSON3{"myCount": 0}
在这种情况下,myCount为0。与
null,和并不相同
false。如果您的条件语句评估为
myCount >0,那么这可能是值得的。此外,如果您基于此处的值运行计算,则0可能会有用。
null但是,如果您要进行测试,那么这实际上是行不通的。
JSON4{"myString": ""}
在这种情况下,您将得到一个空字符串。同样,与JSON2一样,它已定义,但它为空。您可以测试,
if (obj.myString =="")但不能测试
null或
undefined。
JSON5{"myString": "null"}
这很可能会给您带来麻烦,因为您将 字符串 值设置为null。在这种情况下,
obj.myString == "null"但它是 不是
==null。
JSON6{"myArray": []}
这将告诉您数组
myArray存在,但它为空。如果您要对进行计数或评估,这将很有用
myArray。例如,假设您要评估用户发布的照片数量-
您可以这样做
myArray.length,它将返回
0:defined,但没有发布照片。



