一、json取值封装模块
# -*- coding: UTF-8 -*-
from logzero import logger
def get_value(body, columns):
if isinstance(body, dict):
body = body
try:
if len(columns) > 0:
if '.' in columns:
columns_list = columns.split('.')
for key in columns_list:
if key.isdigit():
body = body[int(key)]
else:
body = body[key]
else:
body = body[column]
result = body
return result
else:
return '请输入取值字段!'
except:
return '取值字段输入有误!'
if __name__ == '__main__':
json1 = {
"code": "000000",
"description": "SUCCESS",
"data": {
"total": 2,
"size": 10,
"current": 1,
"pages": 2,
"records": [{
"id": "1522757322021111111",
"ddcId": 1,
"number": "911111",
"name": "北京xxxx有限公司ORA",
"createTime": "2022-05-07 09:56:51",
"address": "北京市朝阳区xx路xx号",
}, {
"id": "1522757322151222222",
"ddcId": 10,
"number": "932222",
"name": "南平市xxxx有限公司",
"createTime": "2022-05-07 09:56:52",
"address": "南平市建阳区xx路xx号",
}]
}
}
# 正常取值字段
column = 'data.records.0.name'
res = get_value(json1, column)
logger.info(res)
# 错误取值字段-取值字段为空
column = ''
res = get_value(json1, column)
logger.info(res)
# 错误取值字段-取值字段包含不存在的key
column = 'data.records.2.name'
res = get_value(json1, column)
logger.info(res)
二、扩展-json控制台格式化输出
if __name__ == '__main__':
json1 = {
"code": "000000",
"description": "SUCCESS",
"data": {
"total": 2,
"size": 10,
"current": 1,
"pages": 2,
"records": [{
"id": "1522757322021111111",
"ddcId": 1,
"number": "911111",
"name": "北京xxxx有限公司ORA",
"createTime": "2022-05-07 09:56:51",
"address": "北京市朝阳区xx路xx号",
}, {
"id": "1522757322151222222",
"ddcId": 10,
"number": "932222",
"name": "南平市xxxx有限公司",
"createTime": "2022-05-07 09:56:52",
"address": "南平市建阳区xx路xx号",
}]
}
}
# 控制台格式化输出
import json
json_dicts = json.dumps(json1, indent=4, ensure_ascii=False)
logger.info(json_dicts)