热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将JSON数据转换成自定义Python对象

将JSON数据转换成自定义Python对象原文:http

将 JSON 数据转换成自定义 Python 对象

原文:https://www . geesforgeks . org/convert-JSON-data-to-a-custom-python-object/

让我们看看如何在 Python 中将 JSON 数据转换成自定义对象。将 JSON 数据转换为自定义 python 对象也称为解码反序列化 JSON 数据。要解码 JSON 数据,我们可以使用 json.loads()json.load() 方法和 object_hook 参数。使用 object_hook 参数是为了当我们执行 json.loads()时,将使用 object_hook 的返回值而不是默认的 dict 值。我们也可以使用这个实现自定义解码器。
例 1 :

Python 3


# importing the module
import json
from collections import namedtuple
# creating the data
data = '{"name" : "Geek", "id" : 1, "location" : "Mumbai"}'
# making the object
x = json.loads(data, object_hook =
               lambda d : namedtuple('X', d.keys())
               (*d.values()))
# accessing the JSON data as an object
print(x.name, x.id, x.location)

输出:

正如我们在上面的例子中所看到的,名为的是集合模块下的一个类。它包含映射到某些值的键。在这种情况下,我们可以使用键和索引来访问元素。我们还可以创建一个自定义解码器函数,在这个函数中,我们可以将 dict 转换为自定义 Python 类型,并将该值传递给 object_hook 参数,如下一个示例所示。
例 2 :****

Python 3


# importing the module
import json
from collections import namedtuple
# customDecoder function
def customDecoder(geekDict):
    return namedtuple('X', geekDict.keys())(*geekDict.values())
# creating the data
geekJsonData = '{"name" : "GeekCustomDecoder", "id" : 2, "location" : "Pune"}'
# creating the object
x = json.loads(geekJsonData, object_hook = customDecoder)
# accessing the JSON data as an object
print(x.name, x.id, x.location)

输出:

我们也可以使用类型模块中的 SimpleNamespace 类作为 JSON 对象的容器。简单命名空间解决方案相对于命名空间双解决方案的优势:-


  1. 它更快,因为它没有为每个对象创建一个类。

  2. 它更短更简单。

例 3 :

Python 3


# importing the module
import json
try:
    from types import SimpleNamespace as Namespace
except ImportError:
    from argparse import Namespace
# creating the data
data = '{"name" : "GeekNamespace", "id" : 3, "location" : "Bangalore"}'
# creating the object
x = json.loads(data, object_hook = lambda d : Namespace(**d))
# accessing the JSON data as an object
print(x.name, x.id, x.location)

输出:


推荐阅读
author-avatar
羊鲜鸡美蟹肥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有