Python对象转换为json的方法步骤


Posted in Python onApril 25, 2019

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'}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中集合的内建函数和内建方法学习教程
Aug 19 Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 Python
python实现的多线程端口扫描功能示例
Jan 21 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
selenium+python自动化测试之环境搭建
Jan 23 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
Python如何调用外部系统命令
Aug 07 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
Python select及selectors模块概念用法详解
Jun 22 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
python regex库实例用法总结
Jan 03 Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 #Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 #Python
Python基础教程之if判断,while循环,循环嵌套
Apr 25 #Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 #Python
NumPy 数组使用大全
Apr 25 #Python
Python+OpenCV采集本地摄像头的视频
Apr 25 #Python
python利用selenium进行浏览器爬虫
Apr 25 #Python
You might like
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
php生成excel列序号代码实例
2013/12/24 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
layui表格设计以及数据初始化详解
2019/10/26 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
Python3 Random模块代码详解
2017/12/04 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
python实现Virginia无密钥解密
2019/03/20 Python
python中np是做什么的
2020/07/21 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
安全检查与奖惩制度
2014/01/23 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
孝女彩金观后感
2015/06/10 职场文书
人与自然的观后感
2015/06/18 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
Docker官方工具docker-registry案例演示
2022/04/13 Servers