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 相关文章推荐
Django学习笔记之Class-Based-View
Feb 15 Python
手把手教你用python抢票回家过年(代码简单)
Jan 21 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
Python并发:多线程与多进程的详解
Jan 24 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
python实现关闭第三方窗口的方法
Jun 28 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
解决pycharm上的jupyter notebook端口被占用问题
Dec 17 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 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中实现记住密码自动登录的代码
2011/03/02 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
讲解Python中运算符使用时的优先级
2015/05/14 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
python输出数学符号实例
2020/05/11 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
高三自我鉴定
2013/10/23 职场文书
招商业务员岗位职责
2013/12/16 职场文书
大学生求职自我评价
2014/01/16 职场文书
求职信内容怎么写
2014/05/26 职场文书
员工工作自我评价
2014/09/26 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技