访问json中的数据没有得到密钥

时间:2016-09-02 13:00:12

标签: javascript jquery json



var data = [{
	"error": false,
	"date": "09-02-2016",
	"day": "5",
	"checkin": "20:29:11",
	"checkout": null,
	"break_timein": null,
	"break_timeout": null,
	"checkin_remarks": "test",
	"checkout_remarks": null,
	"break_time_remarks": null
}];



console.log(data[0].checkin)
console.log(data[0].break_timein)
console.log(data[0].break_timein.length > 0 || data[0].break_timein != null)




对于break_timein,当我在console.log中时,它返回null但是当我得到它的长度时它返回Cannot read property 'length' of null

为什么会这样?

2 个答案:

答案 0 :(得分:1)

  

据我所知,只有在没有属性break_timein的情况下才会显示,但只有null

你在这里得出了错误的结论。该错误与财产是否存在无关。

如果某个媒体资源不存在且您尝试访问其中的媒体资源,则会收到以下错误:

var foo = {};
foo.bar.baz;
// Uncaught TypeError: Cannot read property 'baz' of undefined

" undefined"在这句话中没有引用属性的存在,它指的是 undefined。在JavaScript中,当访问属性时不存在,访问它将返回值undefined

foo.bar
// undefined

还有其他情况会创建undefined,例如当您定义一个没有初始值的变量时:

var abc;
abc;
// undefined

知道我们可以测试直接访问undefined上的属性时会发生什么:

undefined.foo
//  Uncaught TypeError: Cannot read property 'foo' of undefined

这会抛出与上面相同的错误,因此它与属性访问没有任何关系。

现在我们已经确定undefined不能在属性访问上下文中使用。

null是另一个值,就像那样:

null.foo
// Uncaught TypeError: Cannot read property 'foo' of null

是什么使nullundefined与其他原始值(字符串,数字,布尔值)不同,它们会显示此行为?

nullundefined实际上是两种唯一数据类型的值:Null和Undefined。

的数据类型对象包装。字符串,数字和布尔值可以以两种形式存在:作为原始值和作为对象值:

var primitive = "foo";
var object = new String("foo");

当您访问原语值的属性时,例如"foo".length,JavaScript automatically converts the primitive valuetemporary object value,类似于new String("foo").length

但由于Null and Undefined没有等效的对象(由于没有NullUndefined函数这一事实很明显),所以无法做到这一点,因此会抛出错误

答案 1 :(得分:0)

在这里,null没有任何属性,例如 - 长度,这就是为什么它会抛出错误"Cannot read property 'length' of null"。你应该写这样的语句:

console.log(data[0].break_timein != null || data[0].break_timein.length > 0);