2015-02-07 163 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

相关问题