我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python中Json与object转化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python中Json与object转化

python提供了json包来进行json处理,json与python中数据类型对应关系如下:
这里写图片描述
一个python object无法直接与json转化,只能先将对象转化成dictionary,再转化成json;对json,也只能先转换成dictionary,再转化成object,通过实践,源码如下:

import json

class user:
    def __init__(self, name, pwd):
        self.name = name
        self.pwd = pwd

    def __str__(self):
        return 'user(' + self.name + ',' + self.pwd + ')'

#重写JSONEncoder的default方法,object转换成dict
class userEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, user):
            return {
                'name': o.name,
                'pwd': o.pwd
            }
        return json.JSONEncoder.default(o)

#重写JSONDecoder的decode方法,dict转换成object
class userDecode(json.JSONDecoder):
    def decode(self, s):
        dic = super().decode(s)
        return user(dic['name'], dic['pwd'])

#重写JSONDecoder的__init__方法,dict转换成object
class userDecode2(json.JSONDecoder):
    def __init__(self):
        json.JSONDecoder.__init__(self, object_hook=dic2objhook)


# 对象转换成dict
def obj2dict(obj):

    if (isinstance(obj, user)):
        return {
            'name': obj.name,
            'pwd': obj.pwd
        }
    else:
        return obj

# dict转换为对象
def dic2objhook(dic):

    if isinstance(dic, dict):
        return user(dic['name'], dic['pwd'])
    return dic

# 第一种方式,直接把对象先转换成dict
u = user('smith', '123456')
uobj = json.dumps(obj2dict(u))
print('uobj: ', uobj)


#第二种方式,利用json.dumps的关键字参数default
u = user('smith', '123456')
uobj2 = json.dumps(u, default=obj2dict)
print('uobj2: ', uobj)

#第三种方式,定义json的encode和decode子类,使用json.dumps的cls默认参数
user_encode_str = json.dumps(u, cls=userEncoder)
print('user2json: ', user_encode_str)

#json转换为object
u2 = json.loads(user_encode_str, cls=userDecode)
print('json2user: ', u2)

#另一种json转换成object的方式
u3 = json.loads(user_encode_str, cls=userDecode2)
print('json2user2: ', u3)

输出结果如下:

C:\python\python.exe C:/Users/Administrator/PycharmProjects/pytest/com/guo/myjson.py
uobj:  {"name": "smith", "pwd": "123456"}
uobj2:  {"name": "smith", "pwd": "123456"}
user2json:  {"name": "smith", "pwd": "123456"}
json2user:  user(smith,123456)
json2user2:  user(smith,123456)

Process finished with exit code 0

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python中Json与object转化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python中Json与object转化

python提供了json包来进行json处理,json与python中数据类型对应关系如下: 一个python object无法直接与json转化,只能先将对象转化成dictionary,再转化成json;对json,也只能先转换成di
2023-01-31

Python中怎么转化JSON

这篇文章给大家介绍Python中怎么转化JSON,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JSON 名称/值对JSON 数据的书写格式是:名称/值对。名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
2023-06-02

Java中Json与List、Map、entity怎么互相转化

本篇内容介绍了“Java中Json与List、Map、entity怎么互相转化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:导入依赖
2023-07-02

Java中Map与JSON数据之间的互相转化

我们在开发中难免和JSON打交道,这不小编最近遇到了,需要把一些信息转成JSON字符串,下面这篇文章主要给大家介绍了关于Java中Map与JSON数据之间的互相转化,需要的朋友可以参考下
2023-05-16

python如何将json转化为数组

可以使用`json`库中的`loads`函数将JSON字符串转化为Python对象,然后使用`list()`函数将Python对象转化为数组。下面是一个示例:```pythonimport jsonjson_str = '[1, 2, 3,
2023-09-05

JS 将form表单数据快速转化为object对象(json对象)

JavaScript提供多种方法将表单数据快速转换为对象(JSON对象):FormData对象、HTML5FormAPI、jQuery库和自行实现。对于小表单,性能差异较小;对于大表单,FormData对象和HTML5FormAPI性能更佳。选择方法取决于具体需求和浏览器支持。使用JSON.stringify()和JSON.parse()方法可转换JSON字符串和对象。
JS 将form表单数据快速转化为object对象(json对象)
2024-04-02

Java中Map与JSON数据之间怎么互相转化

这篇文章主要介绍了Java中Map与JSON数据之间怎么互相转化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中Map与JSON数据之间怎么互相转化文章都会有所收获,下面我们一起来看看吧。map转JSO
2023-07-06

python Json与pickle数据序列化

在程序运行的过程中,所有的变量都是在内存中。一旦程序结束,变量所占用的内存就被操作系统全部回收。为了避免数据丢失,把变量从内存中变成可存储或传输的过程称之为序列化序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过
2023-01-30

Python中xml和json格式互转

Python中xml和json格式是可以互转的,就像json格式转Python字典对象那样。xml格式和json格式互转用到的xmltodict库安装xmltodict库C:\Users\Administrator>pip3 install
2023-01-31

如何进行python str与json类型转换

这篇文章给大家介绍如何进行python str与json类型转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在写接口测试框架时。避免不了数据类型的转换,比如强制转换string类型,比如转json类型str转json
2023-06-04

json数据与字符串的相互转化示例

json与字符串之间的转换,在使用中经常会遇到,本文有个不错的示例,大家可以参考下,或许会有所帮助
2022-11-15

Python中XML转JSON、XML转字典代码示例

本文介绍了如何使用Python将XML转换为JSON和字典。提供了代码示例,展示将XML数据解析为JSON数据和字典对象的详细步骤。还提供了处理嵌套元素、属性和命名空间的更高级示例。最后,文中提供了最佳实践建议,以确保代码高效、可维护和可靠。
Python中XML转JSON、XML转字典代码示例
2024-04-02

python中json序列化的东东

之所以写这个因为自己总是弄混了,容易弄错,记下来有事没事看看 序列化是指把变量从内存中变成可存储或传输的过程称之为序列化用(使用dump或者dumps),把变量内容从序列化的对象重新读到内存里称之为反序列化(使用load或者loads)如果
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录