python class转json(Python对象转换为json的方法步骤)
python class转json
Python对象转换为json的方法步骤Python中内置了json库,用起来超级方便,json现在以成为开发的必备。
python对象到json字符串的转换规则:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
json字符串到python对象的转换规则:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true True | |
false | False |
null | None |
json的api有下面4个:
- json.loads() 将json转换为dict
- json.dumps() 将dict转换为json
- json.load() 将json文件转换为dict
- json.dump() 将dict转换为json文件 person.json
注意:dict也可以是类对象
dict转换为json
|
import json person = { 'name' : 'jack' , 'age' : 15 , 'email' : 'jack@litets.com' } print ( 'dict:' , person) person_json = json.dumps(person) # 转换为json print ( 'json:' , person_json) |
输出:
dict: {'name': 'jack', 'age': 15, 'email': 'jack@litets.com'}
json: {"name": "jack", "age": 15, "email": "jack@litets.com"}
json转换为dict
|
import json person_dict = json.loads( '{"name": "jack", "age": 15, "email": "jack@litets.com"}' ) print ( 'person dict:' , person_dict) |
输出:
person dict: {'name': 'jack', 'age': 15, 'email': 'jack@litets.com'}
类对象转换为json
|
import json class Person: def __init__( self , name, age, email): self .name = name self .age = age self .email = email person = Person( 'tom' , 38 , 'tom@litets.com' ) person_json = json.dumps(person.__dict__) print ( 'person json:' , person_json) |
输出:
person json: {"name": "tom", "age": 38, "email": "tom@litets.com"}
json.dumps() 不能直接传递一个对象实例否则回报 TypeError: Object of type Person is not JSON serializable 错误 为了避免这个错误,我们需要修改:
|
import json class Person: def __init__( self , name, age, email): self .name = name self .age = age self .email = email # 将person转换为dict def convert2json(person): return { 'name' : person.name, 'age' : person.age, 'email' : person.email } person = Person( 'tom' , 38 , 'tom@litets.com' ) # 第二个参数传递转换函数,或者使用default=lambda o: o.__dict__ person_json = json.dumps(person, default = convert2json) print ( 'person json:' , person_json) |
json转换为类对象
|
import json class Person: def __init__( self , name, age, email): self .name = name self .age = age self .email = email def convert2json(dict_json): return Person(dict_json[ 'name' ], dict_json[ 'age' ], dict_json[ 'email' ]) person = json.loads( '{"name": "tom", "age": 38, "email": "tom@litets.com"}' , object_hook = convert2json) print ( 'person:' , person) |
输出:
person: <__main__.Person object at 0x10a7230b8>
loads函数只能将json转换为字典,需要我们自己转换为对象。
dict/对象转换为json文件
|
import person = { "name" : "tom" , "age" : 38 , "email" : "tom@litets.com" } with open ( 'person.json' , 'w' ) as f: json.dump(person, f) |
当前目录下会多一个person.json文件,内容是:
{"name": "tom", "age": 38, "email": "tom@litets.com"}
将json文件转换为dict/对象
|
import json with open ( 'person.json' , 'r' ) as f: print (json.load(f)) |
输出:
{'name': 'tom', 'age': 38, 'email': 'tom@litets.com'}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:http://litets.com/article/2019/4/24/374.html
- python进程管理教程(Python I/O与进程的详细讲解)
- pythonjson库(Python常用的json标准库)
- python对象创建流程(Python3.5面向对象与继承图文实例详解)
- pythonmatplotlib怎么设置图像(完美解决Python matplotlib绘图时汉字显示不正常的问题)
- python改变图片的色深设置(Python实现去除图片中指定颜色的像素功能示例)
- python中如何定义带走参数的函数(Python函数定义及传参方式详解4种)
- python random函数在哪个包(Python3.5内置模块之random模块用法实例分析)
- python中的数据类型和数字类型(Python数据类型之Number数字操作实例详解)
- python如何抓取公众号文章(python爬取微信公众号文章的方法)
- python3 怎么查看函数用法(Python3 max函数基础用法)
- python创建进程的方法(Python多进程fork函数详解)
- python编写一个聊天机器人(不到20行代码用Python做一个智能聊天机器人)
- python微信防封(深入学习微信网址链接解封的防封原理visit_type)
- pythonmatplotlib绘制立体图形(python3使用matplotlib绘制散点图)
- python控制流实例(如何用C代码给Python写扩展库Cython)
- python教程列表排序(Python一行代码实现快速排序的方法)
- 菲律宾安全吗(菲律宾安全吗)
- 泰国旅游攻略(泰国旅游攻略必去景点)
- 数字藏品市场有多乱 周杰伦丢了 一只猴 ,损失超300万(数字藏品市场有多乱)
- 这里输入关键词(怎么输入关键词搜索)
- 得这个 难治病 的人太多了,300个人赶到杭州商量怎么办(得这个难治病的人太多了)
- 经度,世界时间腕表的灵魂(世界时间腕表的灵魂)
热门推荐
- docker-compose命令(docker-compose教程之安装使用和快速入门)
- docker安装mysql后无法连接(Docker 安装 MySQL 并实现远程连接教程)
- SQL SERVER连接池
- pythontime模块有哪些(Python3.5内置模块之time与datetime模块用法实例分析)
- mysqlreplace用法(细说mysql replace into用法)
- mysql云数据库数据恢复(MySQL 利用frm文件和ibd文件恢复表数据)
- html5 拍照上传(Html5在手机端调用相机的方法实现)
- dedecms默认水印(DEDECMS显示英文日期时间的方法)
- sql server重建索引
- mybatis 分页查询配置(mybatis-plus分页传入参数后sql where条件没有limit分页信息操作)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9