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微信公众号开发简单流程
Mar 23 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
python实现随机漫步算法
Aug 27 Python
解决Python下json.loads()中文字符出错的问题
Dec 19 Python
PyQt5固定窗口大小的方法
Jun 18 Python
基于Python实现签到脚本过程解析
Oct 25 Python
pymysql的简单封装代码实例
Jan 08 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
Python select及selectors模块概念用法详解
Jun 22 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
python自动化调用百度api解决验证码
Apr 13 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中常见的sql攻击正则表达式汇总
2014/11/06 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
js下用eval生成JSON对象
2010/09/17 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python中的with...as用法介绍
2015/05/28 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
python实现狄克斯特拉算法
2019/01/17 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
大学生蛋糕店创业计划书
2014/01/13 职场文书
爱情检讨书大全
2014/01/21 职场文书
求职信需要的五点内容
2014/02/01 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
离婚财产处理协议书
2014/09/30 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript