广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中Json与object转化
  • 732
分享到

python中Json与object转化

pythonJsonobject 2023-01-31 06:01:45 732人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

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

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

--结束END--

本文标题: python中Json与object转化

本文链接: https://www.lsjlt.com/news/189583.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • python中Json与object转化
    python提供了json包来进行json处理,json与python中数据类型对应关系如下: 一个python object无法直接与json转化,只能先将对象转化成dictionary,再转化成json;对json,也只...
    99+
    2023-01-31
    python Json object
  • Python中怎么转化JSON
    这篇文章给大家介绍Python中怎么转化JSON,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JSON 名称/值对JSON 数据的书写格式是:名称/值对。名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:...
    99+
    2023-06-02
  • Java中Json与List、Map、entity的互相转化
    目录第一步:导入依赖第二步:开始使用场景一:转换普通对象(Bean)。使用场景二:转换List集合。Json转List对象使用场景三:转换Map集合。在开发中,Json转换的场景往往...
    99+
    2022-11-13
  • JSON 与 Java 对象之间的转化
    前言 在现在的日常开发中,不管前端还是后端,JSON 格式的数据是用得比较多的,甚至可以说无处不在。 接触最多的就是 POST 请求中传递的数据一般以 JSON 的格式放在请求体中,而且服务端各种 API 返回的数据,在响应体中也基本都是以...
    99+
    2023-09-12
    java json 开发语言
  • 【Python】-- python与json数据格式的转换
    什么是json? json是一种轻量级的数据交互格式,可以按照json指定的格式去组织和封装数据。 json主要功能 json是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递与交互。 json的作用 为了让不同的语言都能相...
    99+
    2023-08-31
    json python 开发语言
  • Java中Json与List、Map、entity怎么互相转化
    本篇内容介绍了“Java中Json与List、Map、entity怎么互相转化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:导入依赖...
    99+
    2023-07-02
  • python字典dict与json数据转换
    JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。现在的接口请求request params和response body,大都是使用json格式的数据。 Python使用reques...
    99+
    2023-09-09
    python json 软件测试
  • Java中Map与JSON数据之间的互相转化
    目录mapmap转JSON字符串JSON字符串转JSON对象Map转JSON对象JSON字符串转MapJSON对象转MapJSON对象转JSON字符串IDEA功能快捷键总结map 此...
    99+
    2023-05-16
    map和json互转 map与json转换 map转为json
  • python如何将json转化为数组
    可以使用`json`库中的`loads`函数将JSON字符串转化为Python对象,然后使用`list()`函数将Python对象转...
    99+
    2023-09-05
    python json
  • Python序列化模块JSON与Pickle
    序列化把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flat...
    99+
    2022-11-11
  • python Json与pickle数据序列化
    在程序运行的过程中,所有的变量都是在内存中。一旦程序结束,变量所占用的内存就被操作系统全部回收。为了避免数据丢失,把变量从内存中变成可存储或传输的过程称之为序列化序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过...
    99+
    2023-01-30
    序列化 数据 python
  • Java中Map与JSON数据之间怎么互相转化
    这篇文章主要介绍了Java中Map与JSON数据之间怎么互相转化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中Map与JSON数据之间怎么互相转化文章都会有所收获,下面我们一起来看看吧。map转JSO...
    99+
    2023-07-06
  • Python实现yaml与json文件批量互转
    目录1. 安装yaml库2. yaml转json3. json转yaml4. 批量将yaml与json文件互相转换1. 安装yaml库 想要使用python实现yaml与json格式...
    99+
    2022-11-11
  • 如何进行python str与json类型转换
    这篇文章给大家介绍如何进行python str与json类型转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在写接口测试框架时。避免不了数据类型的转换,比如强制转换string类型,比如转json类型str转json...
    99+
    2023-06-04
  • json数据与字符串的相互转化示例
    json转成string[需要引用json2.js文件]: 复制代码 代码如下: var arr=[{id:'id',name:'Spring'},{id:'id2',name:'J...
    99+
    2022-11-15
    json转成string string转化为json
  • Python中xml和json格式互转
    Python中xml和json格式是可以互转的,就像json格式转Python字典对象那样。 xml格式和json格式互转用到的xmltodict库 安装xmltodict库 C:\Users\Administrator>pip3...
    99+
    2023-01-31
    格式 Python xml
  • 利用python实现JSON文档与Python对象互相转换
    目录一、将一个JSON文档映射为Python对象第一种方法第二种方法二、将一个Python对象转换为对应的JSON字符串面试题二 之 将对象列表转换为JSON数组总结前言: 如何将一...
    99+
    2022-11-13
  • JSON与Java对象之间的转化方法是什么
    本篇内容介绍了“JSON与Java对象之间的转化方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言在现在的日常开发中,不管前端还是...
    99+
    2023-07-05
  • Python序列化模块之pickle与json详解
    目录序列化模块序列化和反序列化使用场景dumps & loadsdump & loadJSON序列化模块使用场景支持的数据类型JSON和pickle的区别序列化函数j...
    99+
    2022-11-11
  • JavaScript中的JSON转为Python可读取
    目录创作背景问题再现解决办法形参与实参对应关系格式化 JSON给键加上双引号识别且替换值总代码不足创作背景 最近本菜鸡在爬一个网站的时候,意外发现所需 JSON 数据在页面前端,但是...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作