python json 和 jsonpath 模块的使用
作者:互联网
""" json.load() json.loads() json.dump() json.dumps() 的区别 以及 json.jsonpath 用法 """ import json import jsonpath # json.dumps() 将python中字典类型转化成json字符串类型 python_dict = { 'contact_name': 'Auto-test111', 'contact_phone': '18621300857', 'province_code': '110000', 'city_code': '110100', 'district_code': '110101', 'address': '北京市东城区', 'builtin_is_default_address': False, 'managed': 1 } json_dumps_str = json.dumps(python_dict, ensure_ascii=False) print(json_dumps_str, type(json_dumps_str)) # {"contact_name": "Auto-test111", "contact_phone": "18621300857", "province_code": "110000", "city_code": "110100", "district_code": "110101", "address": "北京市东城区", "builtin_is_default_address": false, "managed": 1} <class 'str'> # json.loads() 将json字符串类型转化成python中字典类型 json_str = '{"contact_name": "Auto-test111", "contact_phone": "18621300857", "province_code": "110000",' \ ' "city_code": "110100", "district_code": "110101", "address": "北京市东城区",' \ ' "builtin_is_default_address": false, "managed": 1}' json_dict = json.loads(json_str) print(json_dict, type(json_dict)) # {'contact_name': 'Auto-test111', 'contact_phone': '18621300857', 'province_code': '110000', 'city_code': '110100', 'district_code': '110101', 'address': '北京市东城区', 'builtin_is_default_address': False, 'managed': 1} <class 'dict'> # json.load 将json文件转化成python 字典类型 with open('address.json', encoding='utf-8') as load_json_file: payload = json.load(load_json_file) print(payload, type(payload)) # {'contact_name': 'Auto-test111', 'contact_phone': '18621300857', 'province_code': '110000', 'city_code': '110100', 'district_code': '110101', 'address': '北京市东城区', 'builtin_is_default_address': False, 'managed': 1} <class 'dict'> # json.dumps 将python 字典类型写入json文件 with open("address_new.json", 'w', encoding='utf-8') as write_json_file: json.dump(python_dict, write_json_file, ensure_ascii=False) # jsonpath 的用法 dict_value = {"meta": {"code": 2000, "dataset": {"data": [{"name": "jack_1", "age": 24, "gender": "男"}, {"name": "jack_2", "age": 25, "gender": "男"}, {"name": "jack_3", "age": 26, "gender": "女"}, {"name": "jack_4", "age": 27, "gender": "女"}, {"name": "jack_5", "age": 28, "gender": "女"}, {"name": "jack_6", "age": 29, "gender": "男"}]}}} # 获取所有学生的名字 student_names = jsonpath.jsonpath(dict_value, '$.meta.dataset.data[*].name') student_names = jsonpath.jsonpath(dict_value, '$.meta.dataset..name') print(student_names) # ['jack_1', 'jack_2', 'jack_3', 'jack_4', 'jack_5', 'jack_6'] # 获取第一个学生的名字 student_name = jsonpath.jsonpath(dict_value, '$.meta.dataset.data[0].name') print(student_name) # ['jack_1'] # 获取学生年龄是28岁的学生信息 student_info = jsonpath.jsonpath(dict_value, '$.meta.dataset.data.[?(@.age == 28)]') print(student_info) # [{'name': 'jack_5', 'age': 28, 'gender': '女'}] # 获取学生性别是男性的学生信息 student_info = jsonpath.jsonpath(dict_value, '$.meta.dataset.data.[?(@.gender == "男")]') print(student_info) # [{'name': 'jack_1', 'age': 24, 'gender': '男'}, {'name': 'jack_2', 'age': 25, 'gender': '男'}, {'name': 'jack_6', 'age': 29, 'gender': '男'}] # 获取学生性别是男性的学生名字 student_names = jsonpath.jsonpath(dict_value, '$.meta.dataset.data.[?(@.gender == "男")].name') print(student_names) # ['jack_1', 'jack_2', 'jack_6']
标签:code,name,python,json,jsonpath,dict,jack 来源: https://www.cnblogs.com/zengmuyao/p/16380297.html