2015-05-14 124 views
1

我想打印所有汽車中的東西從這個JSON:「builtin_function_or_method」對象不是可迭代

{ 
    "stuff": [ 
     { 
      "car" : 1, 
      "color" : "blue" 
     }, 
     { 
      "bcarus" : 2, 
      "color" : "red" 
     } 
    ], 
} 

在我的串行訪問我這樣的數據....

stuff = self.context.get("request").data.stuff

但是,當我這樣做......

 for item in stuff: 
      print(item) 

我收到他的錯誤:

'builtin_function_or_method' object is not iterable

爲什麼我得到這個錯誤? 如何在for loop中訪問stuff

當我做print(self.context.get("request").data.stuff)我得到<built-in method items of dict object at 0x105225050>,我認爲打印stuff而不是。

+0

你如何你的JSON字符串解碼? – HamZa

+0

@HamZa我正在使用Django Rest Framework的默認json解碼器。打印的東西給出了......'''' – Prometheus

+1

是否是'「stuff」'真正的密鑰,還是它在你的真實代碼中被命名爲別的東西? ''項目'',也許?因爲你不能使用點符號訪問字典條目,並且如果你用一個名爲'items'的鍵來嘗試,你會得到'items'方法,這是完全不相關的。 – user2357112

回答

1

stuff結束的功能的方法,所以你需要調用它:

for item in stuff(): 
     print(item) 

了基於您的評論是dict.items

所以你可以解開:

for k,v in stuff(): 
    print(k,v) 

或者只是打電話的時候你分配:

stuff = self.context.get("request").data.stuff() 

for k,v in stuff: 
    print(k,v) 
+0

我明白了,對,我認爲DRF會將它轉換成某個地方。這似乎是有道理的。 – Prometheus

+0

'print(self.context.get(「request」)。data)'output? –