以下是一个Python算法,用于展开JSON对象并将其转换为Python字典对象:

import json

def flatten_json(nested_json):
    """
    将嵌套的JSON对象展开为Python字典对象
    """
    # 初始化字典
    flattened_dict = {}

    def flatten(inner_json, name=''):
        """
        递归函数,将嵌套的JSON对象展开为Python字典对象
        """
        # 如果是字典对象
        if type(inner_json) is dict:
            for key in inner_json:
                flatten(inner_json[key], name + key + '_')
        # 如果是列表对象
        elif type(inner_json) is list:
            i = 0
            for item in inner_json:
                flatten(item, name + str(i) + '_')
                i += 1
        # 如果是其他类型对象
        else:
            flattened_dict[name[:-1]] = inner_json

    # 调用递归函数
    flatten(nested_json)

    # 返回展开后的Python字典对象
    return flattened_dict

使用示例:

# 嵌套的JSON对象
nested_json = {
    'name': 'John Doe',
    'age': 30,
    'address': {
        'street': '123 Main St',
        'city': 'Anytown',
        'state': 'CA',
        'zip': '12345'
    },
    'phone_numbers': [
        {
            'type': 'home',
            'number': '555-1234'
        },
        {
            'type': 'work',
            'number': '555-5678'
        }
    ]
}

# 展开JSON对象为Python字典对象
flattened_dict = flatten_json(nested_json)

# 打印展开后的字典对象
print(json.dumps(flattened_dict, indent=4))

输出结果:

{
    "name": "John Doe",
    "age": 30,
    "address_street": "123 Main St",
    "address_city": "Anytown",
    "address_state": "CA",
    "address_zip": "12345",
    "phone_numbers_0_type": "home",
    "phone_numbers_0_number": "555-1234",
    "phone_numbers_1_type": "work",
    "phone_numbers_1_number": "555-5678"
}
json展开的python算法

原文地址: https://www.cveoy.top/t/topic/zbK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录