由空 json 输出导致的错误“在非对象上调用对象键”
Error "Object.keys called on non-object" caused by empty json output
我收到错误Object.keys called on non-object
。有问题的代码是;
numberOfEmployees = Object.keys(employee_data).length;
employee_data
是一个 JSON 对象,用于从 Web 服务获取分配的 JSON 输出数据。仅当 json 输出为空时,才会发生此错误 []
。如果 json 输出不为空,则没有错误。代码有什么问题?
当 JSON 输出为空时,employee_data
[]
变为undefined
。
只有在将非对象放入其中时,才会在非对象上调用错误 Object.keys 发生。见下文 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
return function(obj) {
if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
throw new TypeError('Object.keys called on non-object');
}
您是否测试了employee_data为空时的值是多少。它应该适用于 [ ]。
但是如果你在上面调用了JSON.stringify,那么它将无法工作,见下文。
var emptyData = [];
if(typeof emptyData == 'object')
console.log(Object.keys(emptyData)); // it will print the keys,if there
var emptyData = [];
var emptyJSOn = JSON.stringify(emptyData);
if(typeof emptyJSOn == 'object')
console.log(emptyJson); // it won't print because ,it's not an object.
现在我想你正在尝试传递,emptyJson到Object.keys()方法,这就是你收到此错误的原因。
有关这方面的更多信息,您可以参考 MDN 文档。
相关文章:
- 从联合js rect对象调用引导模式
- 为什么可以't我用Set对象调用Array.prototype.map
- 从数组(JS)中的对象调用函数
- 在CouchDB Map函数中发出日期时-对日期对象调用的内容
- 'stepUp'对未实现接口HTMLInputElement的对象调用
- 从设置为原型的对象调用属性
- 类型错误:'单击'对未实现接口HTMLElement的对象调用
- 从javascript对象调用函数
- 得到"未捕获的类型错误:未定义的不是函数“;当试图从对象调用get()或set()时
- 子对象调用兄弟姐妹'方法
- 是否可以在函数构造函数中识别哪个对象调用它,并在错误的对象调用时中止创建
- Angularjs:错误:'追加'对未实现接口FormData的对象调用.jQuery.param/ad
- 为什么这个带有对象调用函数的Javascript setInterval在传入回调时不计算内部参数
- 生成自定义对象调用
- 对非对象调用了gulp jscs Object.keys
- JavaScript 从子对象调用父函数
- 对字符串对象调用 .localeCompare 与构造特制的 Intl.Collator 对象之间的性能差异
- 一次将所有对象调用到函数中,返回每个对象的特定计算
- 不能从jquery对象调用的Javascript方法
- 从具有事件侦听器的对象调用函数