如何从estate.json生成对象存储objektidentitet值?
解决方案
首先,先确保你已经正确读取了JSON文件,基础代码参考如下:
import json # 读取JSON文件 with open('estate.json', 'r', encoding='utf-8') as f: data = json.load(f) # 提取所有Feature对象 features = data.get('features', [])
下面给出几种将objektidentitet及相关数据封装为可复用对象的实现方法:
方法1:使用dataclasses(推荐,Python3.7+)
dataclasses是Python标准库自带的工具,能快速定义数据类,无需手动编写初始化和字符串输出方法:
from dataclasses import dataclass @dataclass class Estate: objektidentitet: str # 若需要其他properties字段,直接在这里添加即可,比如: # estate_name: str # area: float # 批量转换为Estate对象列表 estate_objects = [] for feature in features: props = feature.get('properties', {}) estate = Estate( objektidentitet=props.get('objektidentitet') # 其他字段按需补充,比如estate_name=props.get('name') ) estate_objects.append(estate) # 使用示例:遍历对象获取值 for estate in estate_objects: print(estate.objektidentitet)
方法2:普通自定义类
如果不想用dataclass,手动实现类的初始化逻辑也可以:
class Estate: def __init__(self, objektidentitet): self.objektidentitet = objektidentitet # 可按需添加其他属性,比如self.area = area # 转换为对象列表 estate_objects = [] for feature in features: objekt_id = feature['properties']['objektidentitet'] estate_objects.append(Estate(objekt_id)) # 使用示例 for estate in estate_objects: print(estate.objektidentitet)
方法3:使用recordclass(轻量级,适合大量数据)
如果之前尝试recordclass没搞懂,参考以下步骤:
首先安装依赖库:
pip install recordclass
然后编写代码:
from recordclass import recordclass # 定义轻量级数据类,属性可修改且内存占用更低 Estate = recordclass('Estate', ['objektidentitet']) # 批量转换为对象列表 estate_objects = [Estate(feature['properties']['objektidentitet']) for feature in features] # 使用示例 for estate in estate_objects: print(estate.objektidentitet)
方法4:简化方案——字典列表
如果不需要严格的对象结构,直接提取properties为字典列表也能满足后续操作,灵活性更高:
estate_dicts = [feature['properties'] for feature in features] # 使用示例:提取所有objektidentitet值 objekt_ids = [item['objektidentitet'] for item in estate_dicts] print(objekt_ids)
你可以根据需求选择方案:需要结构化类型约束选dataclass;数据量极大追求性能选recordclass;临时快速处理用字典列表即可。
内容的提问来源于stack exchange,提问作者MathiasF78
相关产品推荐
相关产品推荐

