如何在不使用[0]的情况下打印出json对象?

时间:2018-09-05 09:28:01

标签: python json

因此,我一直在使用JSON并尝试进行打印,但是没有任何运气。基本上,JSONI尝试打印的是 city ,如您在此处看到的:

irb

我对代码所做的事情是,我创建了一个循环,该循环通过调用名称{ 'id': '5235246c-ac21a7-151128-8cd9-512512', 'type': 'Hello world', 'metadata': { 'invite_text': "A very cool text here!!", 'cityplace': [ { 'display_text': 'Stackoverflow City', } ] } } 来打印,该名称为我提供了我打印出的JSON对象。

我尝试过的是

test_print

不幸的是,这给了我错误

print(test_print['metadata']['cityplace']['display_text'])

所以我需要做的是:

TypeError: list indices must be integers or slices, not str

现在我的问题是:是否可以打印出来而不必添加print(test_print['metadata']['cityplace'][0]['display_text']) ,因为将来可能不会总是[0]

3 个答案:

答案 0 :(得分:1)

cityplace是一个列表。使用索引。

例如:

test_print = {
  'id': '5235246c-ac21a7-151128-8cd9-512512',
  'type': 'Hello world',
  'metadata': {
    'invite_text': "A very cool text here!!",
    'cityplace': [
      {
        'display_text': 'Stackoverflow City',
      }
    ]
  }
}

print(test_print['metadata']['cityplace'][0]['display_text'])

或对其进行迭代。

例如:

for i in test_print['metadata']['cityplace']:
    print(i["display_text"])

答案 1 :(得分:1)

cityplace不是JSON。它是仅包含一个JSON的列表。因此,您必须从中选择JSON,当然是[0]。如果列表将来会包含更多元素,则需要进行迭代

 texts = [city['display_text'] for city in test_print['metadata']['cityplace']

答案 2 :(得分:1)

由于您使用的是索引数组,因此访问数组值的唯一方法是使用数组的索引(并且始终为0-以后不会更改)。

您可以使用关联数组来访问访问键及其值。

link可以帮助您创建关联数组。