首页 > 解决方案 > 将 json 文件反序列化为对象数组

问题描述

我有一个包含新西兰地区和城镇的 json 文件:

{
    "region": [
        {
            "region_name": "northland",
            "towns": [
                "whangarei",
                "paihia",
                "russel"
            ]
        },
        {
            "region_name": "auckland",
            "towns": [
                "auckland",
                "porirua"
            ]
        }
    ]
}

我还定义了一个 Region 类来反序列化这个文件:

class Region:
    def __init__(self):
        self.region_name = ''
        self.towns = []

我想将上面的 json 文件转换为一个数组Region,这是我尝试过的:

import json

def get_nz_regions():
    with open('location/nz_regions.json') as json_file:
        nz_regions = json.load(json_file)

        # return an array of Region

标签: pythonjson

解决方案


你在寻找类似的东西

d = {
    "region": [
        {
            "region_name": "northland",
            "towns": [
                "whangarei",
                "paihia",
                "russel"
            ]
        },
        {
            "region_name": "auckland",
            "towns": [
                "auckland",
                "porirua"
            ]
        }
    ]
}

class Region:
    def __init__(self, region_name, towns):
        self.region_name = region_name
        self.towns = towns
        
d_deserialized = {"region":[]}
for each_region in d["region"]:
    d_deserialized["region"].append(Region(each_region["region_name"], each_region["towns"]))
    
print(d_deserialized)
{'region': [<__main__.Region object at 0x0000022344DB3DF0>, <__main__.Region object at 0x0000022344DB3D30>]}

推荐阅读