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 装饰器 @decorator)
- python代码返回值(Python 函数返回值的示例代码)
- python编写端口扫描器(Python开发网站目录扫描器的实现)
- python实现网络爬虫的步骤(Python实现的爬取小说爬虫功能示例)
- pythondict排序原理(Python标准库使用OrderedDict类的实例讲解)
- python读取文件怎么用(Python基础之文件读取的讲解)
- python条形码识别(python3转换code128条形码的方法)
- python基础教程常用函数整理(Python基础之函数的定义与使用示例)
- python怎么从数组中取内容(python调用c++ ctype list传数组或者返回数组的方法)
- python字符串分析总结(Python 存储字符串时节省空间的方法)
- python起源详解(Python发展简史 Python来历)
- python中的time时间模块使用知识(python实现简单日期工具类)
- python抽奖转盘代码(详解python--模拟轮盘抽奖游戏)
- python3.9.1如何安装模块(Python3.6中Twisted模块安装的问题与解决)
- python时间序列模式识别(Python时间序列处理之ARIMA模型的使用讲解)
- Python实现FTP弱口令扫描器的方法示例(Python实现FTP弱口令扫描器的方法示例)
- 大众推出了第五代高尔夫GT(大众推出了第五代高尔夫GT)
- 换代在即,现在是抄底 7.5代 高尔夫的最佳时机吗(换代在即现在是抄底)
- 2020年大众7.5代高尔夫R终结特别版 最后的呐喊(2020年大众7.5代高尔夫R终结特别版)
- 七年前的这部剧有毒,全剧只有女主红到发紫,男主至今无人认识(七年前的这部剧有毒)
- 宋轶除了演过于曼丽,原来还演过一个青楼女子(宋轶除了演过于曼丽)
- 赵丽颖第一部当女主的戏,主角配角个个都是实力演员(赵丽颖第一部当女主的戏)
热门推荐
- docker离线安装步骤(Windows下Docker安装各种软件的详细过程)
- sqlserver数据库如何分页(SQL server分页的4种方法示例很全面)
- dedecms修改发布时间(织梦DEDECMS中的时间格式代码汇总)
- dedecms标题在哪改(dedecms任意页面调用栏目内容标签{dede:field.content/}的方法)
- 如何用阿里云绑定域名(阿里云域名和ip绑定步骤方法实现)
- css3 图片样式处理(CSS3实现漂亮的照片墙效果的简单实例推荐)
- phplaravel快速开发平台(laravel框架实现去掉URL中index.php的方法)
- mysql binlog模式实际使用(实例验证MySQL|update字段为相同的值是否会记录binlog)
- linux怎么上传windows的文件(Windows本地环境和Linux腾讯云服务器之间传输文件的方法)
- linuxdocker命令使用教程(seata docker 高可用部署的详细介绍)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9