web-dev-qa-db-ja.com

任意にネストされたJSONデータの特定のフィールドにアクセスする

{
  "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からコンテンツ "FOLLOW ME PLEASE"を取得するにはどうすればよいですか?

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

これは['announcement']と私はできません['announcement']['content']

これを行う正しい方法は何ですか?

これを理解するのを手伝ってくれてありがとう。

14
aquatic7

ネストされたJSONデータがあります。 'annoucement'キーに関連付けられた文字列は、それ自体が別の独立した埋め込みJSONドキュメントです。

最初にその文字列をデコードする必要があります:

import json

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

その後、そこから結果の辞書を処理します。

3
Martijn Pieters

"announcement"の内容は別のJSON文字列です。デコードしてから、外側のオブジェクトで行っていたようにその内容にアクセスします。