首页 新闻 会员 周边 捐助

Python比对接口返回数据和数据库查询数据是否一致

0
[待解决问题]


如何比较上面两组数据是否一致,类型格式都不同

向溪行的主页 向溪行 | 菜鸟二级 | 园豆:214
提问于:2022-09-28 14:28
< >
分享
所有回答(3)
0

先把接口返回的值里面的 name 和 value提取出来,构造成第二行一样的结构。
然后2个接口排序后比较

wang_yb | 园豆:4891 (老鸟四级) | 2022-09-28 15:19

我就卡在第一步,把这个数据取出来 这个是个字符串,利用json转也不行,利用ast.literal_eval也不成功 这个应该咋取?

支持(0) 反对(0) 向溪行 | 园豆:214 (菜鸟二级) | 2022-09-28 17:17

@向溪行: 如果数据是在一个列表里面的话。想办法把中括号去掉。换成 "{.....}"这样的字符串类型,再json转换。
1、replace() 把 "[" "]" 换成空。
2、re正则, ^\[(.*)\]$

支持(0) 反对(0) Sui丶便 | 园豆:198 (初学一级) | 2022-09-29 13:06
0

eval() 函数处理下接口返回的数据。这样成了列表类型了,索引取值。你可以type()下类型看看

Sui丶便 | 园豆:198 (初学一级) | 2022-09-29 11:31
0
#!/usr/bin/python
# -*- coding:utf-8 -*-
"""
__auth__ = fuyouduhai
__date__ = 2022/9/29
__soft__ = PyCharm
"""
import json

# 看你获取的结果是str类型
api_str = '[{"name": "信息", "value": 26}, {"name": "中", "value": 5}]'
# 数据库查找的数据为tuple
db_result = (('信息', 26), ('中', 5))

# 将str转成json
api_info = json.loads(api_str)
print(api_info)
print(type(api_info))

# 声明一个新list,存放元祖元素
api_list: list = []
# 遍历json对象list,将每个字典的values提取转成list后转tuple
for i in api_info:
    # 这里需要理解dict.values(),是获取一个字典中所有的value,不等同于你打引号的value
    t_i = tuple(list(i.values()))
    # 将每个元祖添加到list
    api_list.append(t_i)
# 将list转成tuple
api_tuple = tuple(api_list)
print(api_tuple)
# 比较结果
print(api_tuple == db_result)
蜉蝣渡海 | 园豆:466 (菜鸟二级) | 2022-09-29 18:47

支持(0) 反对(0) 蜉蝣渡海 | 园豆:466 (菜鸟二级) | 2022-09-29 18:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册