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下载文件时显示下载进度的方法
Apr 02 Python
Python中字符串对齐方法介绍
May 21 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
pandas 条件搜索返回列表的方法
Oct 30 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
pytorch SENet实现案例
Jun 24 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 Python
python简单验证码识别的实现过程
Jun 20 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
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
js单例模式详解实例
2013/11/21 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
Python 文件管理实例详解
2015/11/10 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
python实现简易学生信息管理系统
2020/04/05 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
大学生军训广播稿
2014/01/24 职场文书
高一政治教学反思
2014/01/28 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
幼师求职自荐信
2015/03/26 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android