一.需求
测试遇到需求如下:去除json报文多余字段(报文有6、7百个key,多余字段有200多key)
二.多余字段excel
excel给定需要删除的key以及key所对应的json层级,层级格式如下:f/0/s
key | json层级 |
---|---|
a | |
f | |
0 | f/0 |
s | f/0/s |
t | f/0/t |
三.python实现
那首先呢,大致分两步:第一步是读取excel,找出要删除的key和对应的层级;第二步是利用递归去删除key。
代码如下:
import openpyxl
import json
def read_excel(filename, sheetname, key_column, level_column):
workbook = openpyxl.load_workbook(filename)
sheet = workbook[sheetname]
data = []
for row in range(2, sheet.max_row + 1):
key = sheet[key_column + str(row)].value
level = sheet[level_column + str(row)].value
data.append((key, level))
return data
def delete_keys(json_str, keys):
data = json.loads(json_str)
for key, level in keys:
if level == '':
if key in data:
del data[key]
else:
levels = level.split('/')
curr_obj = data
for son in levels:
if son in curr_obj:
curr_obj = curr_obj[son]
else:
continue
if key in curr_obj:
del curr_obj[key]
return json.dumps(data)
if __name__ == '__main__':
filename = r'E:\jiaoben\delete_key.xlsx'
sheetname = 'Sheet1'
key_column = 'C' # 要删除的键所在的列
level_column = 'O' # 键的层级所在的列
json_data = '{"a":"a","b":"b","f":{"0":{"s":"value1","t":"value2","n":301}}}'
keys = read_excel(filename, level_column)
json_data = delete_keys(json_data, keys)
print(json_data)
原文地址:https://blog.csdn.net/qipa12345/article/details/131830689
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。