先把接口返回的值里面的 name 和 value提取出来,构造成第二行一样的结构。
然后2个接口排序后比较
我就卡在第一步,把这个数据取出来 这个是个字符串,利用json转也不行,利用ast.literal_eval也不成功 这个应该咋取?
@向溪行: 如果数据是在一个列表里面的话。想办法把中括号去掉。换成 "{.....}"这样的字符串类型,再json转换。
1、replace() 把 "[" "]" 换成空。
2、re正则, ^\[(.*)\]$
eval() 函数处理下接口返回的数据。这样成了列表类型了,索引取值。你可以type()下类型看看
#!/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)