python - 在任意嵌套的JSON數據中訪問特定字段




list dictionary (2)

在一行 -

>>> json.loads(data['data']['video_info'][0]['announcement'])['content']
'FOLLOW ME PLEASE'

為了幫助您了解如何訪問數據(因此您不必再次詢問),您需要 盯著您的數據

首先,讓我們很好地佈置您的數據。 您可以使用 json.dumps(data, indent=4) ,也可以使用 JSONLint.com 等在線工具。

{
    'data': {
        'time': '1515580011',
        'video_info': [{
            'announcement': (    # ***
            """{
                "announcement_id": "6",
                "name": "INS\\u8d26\\u53f7",
                "icon": "http:\\\\/\\\\/liveme.cms.ksmobile.net\\\\/live\\\\/announcement\\\\/2017-08-18_19:44:54\\\\/ins.png",
                "icon_new": "http:\\\\/\\\\/liveme.cms.ksmobile.net\\\\/live\\\\/announcement\\\\/2017-10-20_22:24:38\\\\/4.png",
                "videoid": "15154610218328614178",
                "content": "FOLLOW ME PLEASE",
                "x_coordinate": "0.22",
                "y_coordinate": "0.23"
            }"""),
            'announcement_shop': ''
        }]
    },
    'msg': '',
    'status': '200'
} 

***請注意, announcement 密鑰中的數據實際上是 更多的 json數據,我已在單獨的行中列出。

首先,找出數據所在的位置。 您正在尋找 content 密鑰中的數據,該密鑰由 announcement 密鑰訪問,該密鑰是一系列字典中的字典的一部分,可以通過 video_info 密鑰訪問,而該密鑰又由 data 訪問。

因此,總而言之,使用以下“梯級”“下降”作為“數據”的梯子 -

  1. data ,字典
  2. video_info ,一個 video_info 列表
  3. announcement ,在詞典清單的第一個詞典中的一個詞典
  4. content 作為json數據的一部分。

第一,

i = data['data']

下一個,

j = i['video_info']

下一個,

k = j[0] # since this is a list

如果你只想要第一個元素,這就足夠了。 否則,你需要 迭代

for k in j:
    ...

下一個,

l = k['announcement']

現在, l 是JSON數據。 加載它 -

import json
m = json.loads(l)

最後,

content = m['content']

print(content)
'FOLLOW ME PLEASE'

如果您將來有這種性質的問題,這應該可以作為指導。

這個問題在這裡已有答案:

{
  "status": "200",
  "msg": "",
  "data": {
    "time": "1515580011",
    "video_info": [
      {
          "announcement": "{\"announcement_id\":\"6\",\"name\":\"INS\\u8d26\\u53f7\",\"icon\":\"http:\\\/\\\/liveme.cms.ksmobile.net\\\/live\\\/announcement\\\/2017-08-18_19:44:54\\\/ins.png\",\"icon_new\":\"http:\\\/\\\/liveme.cms.ksmobile.net\\\/live\\\/announcement\\\/2017-10-20_22:24:38\\\/4.png\",\"videoid\":\"15154610218328614178\",\"content\":\"FOLLOW ME PLEASE\",\"x_coordinate\":\"0.22\",\"y_coordinate\":\"0.23\"}",
          "announcement_shop": "",

如何從這個json中獲取“關注我”的內容?

replay_data = raw_replay_data['data']['video_info'][0]
announcement = replay_data['announcement']

這抓住了 ['announcement'] 的所有內容,我無法做 ['announcement']['content']

這樣做的正確方法是什麼?

提前謝謝你幫助我解決這個問題。


您有 嵌套的JSON數據 ; 與 'annoucement' 鍵相關聯的字符串本身是另一個獨立的嵌入式JSON文檔。

你必須首先解碼該字符串:

import json

replay_data = raw_replay_data['data']['video_info'][0]
announcement = json.loads(replay_(data['announcement'])
print(announcement['content'])

然後從那里處理結果字典。





dictionary