簡體   English   中英

空的json輸出導致錯誤“在非對象上調用Object.keys”

[英]Error “Object.keys called on non-object” caused by empty json output

我收到Object.keys called on non-object的錯誤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/zh-CN/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文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM