社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python-如何从json获取和使用一个特定的字符串,该字符串是从api接收的?[复制品]

Newbie • 4 年前 • 974 次点击  

这个问题已经有了答案:

{
  "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'] .

正确的方法是什么?

提前谢谢你帮我弄明白。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/41034
 
974 次点击  
文章 [ 3 ]  |  最新文章 4 年前
Ignacio Vazquez-Abrams
Reply   •   1 楼
Ignacio Vazquez-Abrams    6 年前

内容 "announcement" 是另一个json字符串。解码它,然后像处理外部对象一样访问它的内容。

Martijn Pieters
Reply   •   2 楼
Martijn Pieters    6 年前

你有 嵌套JSON数据 ;与 'annoucement' key本身是另一个独立的嵌入式json文档。

您必须先解码该字符串:

import json

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

然后从那里处理得到的字典。

Martijn Pieters
Reply   •   3 楼
Martijn Pieters    5 年前

一字排开-

>>> 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 密钥,可由 公告 键,它是dicts列表中字典的一部分,可以通过 video_info 密钥,依次由 data .

因此,总而言之,使用下面的“横档”来“下降”梯形图,即“数据”-

  1. 数据 ,一本字典
  2. 小精灵 ,一份口述清单
  3. 公告 ,在命令列表的第一个命令中的命令
  4. 内容 作为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'

如果您将来有这种性质的查询,这应该是一个很有希望的指导。