【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控制台格式化输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 @   键上一指禅  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示