吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1116|回复: 7
收起左侧

[求助] python调用接口的时候返回两种类型的值

[复制链接]
吞茶嚼花 发表于 2020-4-7 00:10
小白一枚 最近用 git 上的一个接口   requests.post弄了个学习通自动签到的 但是接口返回的数据有时候不一样 好像是随机的
[{"name":"test","date":"04-06 10:10","status":"success"}]

{'name': 'test', 'date': '2020-04-06 20:59:51', 'status': '学生端-签到成功'}

试过 json.loads 和 r.json 都没办法将 r[‘status’]的内容提取出来 总是报错 求教

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xiaoaiai2468 发表于 2020-4-7 00:21
那就换个方法,用取文本中间来取出来
52loli 发表于 2020-4-7 01:40
xyx0826 发表于 2020-4-7 05:08
[Python] 纯文本查看 复制代码
import json
from json import JSONDecodeError

# 列表 JSON
JSON_LIST = "[{\"name\":\"test\",\"date\":\"04-06 10:10\",\"status\":\"success\"}]"
# 对象 JSON
JSON_OBJ  = "{'name': 'test', 'date': '2020-04-06 20:59:51', 'status': '学生端-签到成功'}"

def parse(s):
    try:
        # 加载JSON
        j = json.loads(s)
    except JSONDecodeError:
        # JSON格式非法,把单引号换成双引号
        j = json.loads(s.replace("\'", "\""))
    
    if isinstance(j, list):
        # JSON是列表
        for obj in j:
            print(f"status = {obj['status']}")
    else:
        # JSON是单个对象
        print(f"status = {j['status']}")

parse(JSON_LIST)
parse(JSON_OBJ)


输出:
[PowerShell] 纯文本查看 复制代码
status = success
status = 学生端-签到成功


这两个JSON的区别:
- 第一个JSON里的对象被包在一对方括号里,意味着这是一个列表,里面可能有不止一个对象。
- 第二个JSON没有方括号,是单个对象。
- 不同于第一个JSON,第二个JSON用了单引号而不是双引号,所以它的格式其实是非法的。这就是为什么 json.loads() 会抛 JSONDecodeError 错误。

解法:
- 先加载JSON,如果单引号报错就把单引号全换成双引号。
- 判断加载返回的对象类型,如果是 list 列表就遍历,如果是单个对象就直接返回。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
吞茶嚼花 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| 吞茶嚼花 发表于 2020-4-7 09:11
xiaoaiai2468 发表于 2020-4-7 00:21
那就换个方法,用取文本中间来取出来

返回类型有两种…我不懂咋转换
 楼主| 吞茶嚼花 发表于 2020-4-7 09:12
52loli 发表于 2020-4-7 01:40
实在不行你就正则

request返回的两种类型 类型转换不会…我试过这样不行
 楼主| 吞茶嚼花 发表于 2020-4-7 09:13
xyx0826 发表于 2020-4-7 05:08
[mw_shl_code=python,true]
import json
from json import JSONDecodeError

感谢!我试试看
 楼主| 吞茶嚼花 发表于 2020-4-7 09:53
xyx0826 发表于 2020-4-7 05:08
[mw_shl_code=python,true]
import json
from json import JSONDecodeError

成功了!折磨我好久的问题终于解决了 但是今天评分没有了 明天再给你!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 05:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表