【Python】json取值封装

一、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)

  

posted @ 2022-09-14 16:04  键上一指禅  阅读(83)  评论(0)    收藏  举报