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实现维吉尼亚算法)
- python代码返回值(Python 函数返回值的示例代码)
- python代码词频分析(python实现词法分析器)
- python 读文件报错处理(解决python写入带有中文的字符到文件错误的问题)
- python报表可视化(使用Python快速制作可视化报表的方法)
- python钉钉机器人(python钉钉机器人运维脚本监控实例)
- python外部如何调嵌套函数(python中嵌套函数的实操步骤)
- python抓取天气数据(Python实战之制作天气查询软件)
- python列表生成怎么用(详解python列表生成式和列表生成式器区别)
- python中什么是迭代器(一篇文章彻底搞懂Python中可迭代Iterable、迭代器Iterator与生成器Generator的概)
- python表格导出为图片(python生成带有表格的图片实例)
- python中对象方法和顶级方法(Python3.5面向对象程序设计之类的继承和多态详解)
- python零基础入门加密与解密(Python玩转加密的技巧推荐)
- pythoncsv格式转换(Python把对应格式的csv文件转换成字典类型存储脚本的方法)
- python高德地图可视化(利用python和百度地图API实现数据地图标注的方法)
- python使用pandas数据分析系列(python使用pandas处理大数据节省内存技巧推荐)
- 淘宝支持账号名修改,网友 终于可以 重新做人 了(淘宝支持账号名修改)
- 盘点那些年让人称奇的年终奖 最后一个赢辣条毫无悬念(盘点那些年让人称奇的年终奖)
- 你还没有升职吗 他竟因为几套激励理论,升职了(你还没有升职吗)
- 某知名企业绩效管理体系及薪酬分配体系操作手册(某知名企业绩效管理体系及薪酬分配体系操作手册)
- 职场人改不掉这4个习惯,只会越混越穷,一辈子也翻不了身(职场人改不掉这4个习惯)
- 华为 联想等46家公司笔试面试题,涉及各行各业,建议收藏(联想等46家公司笔试面试题)
热门推荐
- 最小web服务器linux系统(常用的web服务器软件整理win+linux)
- css3三维模型(CSS3系列之3D制作方法案例)
- css之float布局(css float属性_动力节点Java学院整理)
- 修改sqlserver数据库名称步骤(SQL server数据库创建代码 filegroup文件组修改的示例代码)
- css如何使用z-index(CSS中的z-index属性基本使用教程)
- centos7设置开机启动脚本(Centos7.3开机自动启动或执行指定命令操作)
- MySQL中interactive_timeout和wait_timeout
- html5video怎么优化(html5 移动端视频video的android兼容去除播放控件、全屏)
- dedecms中如何设置推荐文章(实现dedecms友情链接分栏目调用的方法图)
- js限制用户(如何用JS追踪用户)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9