python如何通过Json路径返回Json响应对应的值

来自:网络
时间:2024-08-28
阅读:

通过Json路径返回Json响应对应的值

最近做一个接口自动化项目时,需要根据Json响应体的路径来取出对应的值。

Json体有不同的层级结构,在Python中,类似于字典包数组或数组包字典的组合。

那知道了Json值的路径,怎么去拿到值呢。

话不多说,上代码

class PathValue:
    def __init__(self, json_res, value_path):
        """
        通过json路径找到需要的值,并存入一个全局字典
        :param json_res: json响应
        :param value_path: 取值路径
        """
        self.json_res = json_res
        self.value_path = value_path

    def path_value_dic(self):
        """
        如果存在多个值,使用,分隔value_path
        :return:
        """
        l_path = self.value_path.split(",")
        for path in l_path:
            self.json_path_value(self.json_res, path)

    def json_path_value(self, d, s):
        """
        根据传入的json路径从响应中取值,存入dic,主要运用了递归函数
        :param d: 响应Json
        :param s: Json路径
        :return: 存入值的字典dic
        """
        pahts = s.split(".")
        if len(pahts) == 1:
            dic[pahts[0]] = d[pahts[0]]
            return
        for p in pahts:
            if p.isnumeric():
                a = d[int(p)]
                return self.json_path_value(a, '.'.join(pahts[1:]))
            a = d[p]
            return self.json_path_value(a, '.'.join(pahts[1:]))


if __name__ == '__main__':
    dic = {}
    d1 = {
        "page": 1,
        "total": 919,
        "items": [
            {
                "csku": "1099688",
                "rsku": "6992044",
            }
        ],
    }
    s_path = 'items.0.csku,items.0.rsku'
    # s_path = 'items.0.csku'
    p = PathValue(d1, s_path)
    p.path_value_dic()
    print(dic)

以上代码,直接跑,可将需要取的值存入一个字典。

具体想怎么存怎么使用,就各自发挥了~

Python:返回json数据

安装json库

pip install json
conda install json

在Python中,你可以使用内置的json模块来返回一个JSON数据。以下是一个简单的例子:

示例

import json  
  
def get_json():  
    data = {  
        "name": "John",  
        "age": 30,  
        "city": "New York"  
    }  
    return json.dumps(data)  
  
# 调用函数并打印返回的JSON数据  
print(get_json())

python如何通过Json路径返回Json响应对应的值

在这个例子中,首先导入了json模块。

然后定义了一个名为get_json的函数,该函数返回一个字典。

我们使用json.dumps()函数将这个字典转换为一个JSON字符串,然后返回这个字符串。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

返回顶部
顶部