2015-02-07 92 views
4

這個主題有很多問題,但大多數人似乎忘記了撥打json.loadsJSON字符串索引必須是整數

這是我的例子:

import json 

json_input = '{ "ar": { "articles": { "12345": {"title": "first title" } , "67890": {"title": "another title" } } } } ' 

data = json.loads(json_input) 

for article in data['ar']['articles']: 
    print(article['title']) 

打印調用失敗,出現錯誤:

TypeError: string indices must be integers

我怎樣才能解決這個問題?

+0

總是發佈完整回溯...這將更有幫助:) – 2015-02-07 19:52:56

回答

4

您目前正在打印什麼是文章字典的關鍵,而不是文章的標題本身。如果你在你的例子打印的文章,它會打印鍵

In [6]: for article in data['ar']['articles']: 
     print(article) 
    ...:  
67890 
12345 

要打印的文章的標題,重複在字典中的項目:

In [1]: import json 

In [2]: json_input = '{ "ar": { "articles": { "12345": {"title": "first title" } , "67890": {"title": "another title" } } } } ' 

In [3]: data = json.loads(json_input) 

In [4]: for article in data['ar']['articles'].values(): 
    ...:  print(article['title']) 
    ...:  
another title 
first title 
+0

嗯爲什麼-1? – 2015-02-07 19:56:32

+0

我可以慶幸地說,這不是我在做-1。 – Peter 2015-02-07 20:05:36

+1

我不是downvoting,但我會建議遍歷'values'(或Python 2中的'itervalues')而不是字典的'items',因爲你根本不需要密鑰。 – Blckknght 2015-02-07 20:10:46

相關問題