IMG_9491.txt.txt
Edited: Thursday 1 May 2025

Tuesday, July 20, 2021 at 11:57

Python: JSON 数 据 转 化 成 Python 对 象 的 方 法

JSON 格 式 的 数 据 在 和 服 务 命 通 信 过 程 中 很 常 见 , 用 Python 处 理 我 们
可 以 用 json 库 来 读 取 , 将 其 转 化 成 一 个 字 典 。 不 过 字 典 访 问 语 法 太 繁
琐 了 , 我 们 需 要 将 其 转 化 一 般 对 象 , 然 后 用 访 问 类 属 性 的 方 法 去 访 问key-value对。

直 接 硬 写 的 非 常 繁 琐 , 我 们 需 要 显 式 地 讲 类 定 义 出 来 ,

然 后 一 个 个 读 取 属 性 然 后 完 成 复 制 。 我 们 需 要 一 个 更 加 符 合 BRY (Dont Repeat Yourself) 原 则 的 方 法 。

下 面 是 使 用 simpleNamespace 的 做 法 :

1 import json

2 from types import SimpleNamespace

4 data = ‘{f“name“: “John Smith“ , “hometown“: {“name“: “New York“ , “id“: 123}}’
5

Parse JSON into an object with attributes corresponding to dict keys 。

X = jjson.loads(data, object_hook=1ambda d: SimpleNamespace(**d) )
print (X.name, X.hometown .name X。hometown .id )

转 化 成 namedtuple 的 方 法 :

import json

from collections import namedtuple

data 二 “{f“name“: “John Smith“, “hometown“: {“name“: “New York“ , “id“: 12377 「

Parse JSON into an object with attributes corresponding to dict keys .

X = json.loads(data, object_hook=lambda d: namedtuple(‘X’, d.keys () )(*d.values()))

print X.name, X.hometown .name X。hometown .id

SimpleNamespace 内 部 只 是 对 字 典 类 型 做 了 封 装 , 因 此 上 面 这 个 转 换的 效 率 会 比 较 高 。

3 参 考 链 接
s How to convert JSON data into a Python object

s What is the difference between SimpleNamespace and empty
class definition2

Backlinks