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实现sublime3的less编译插件示例
Apr 27 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
Mar 13 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
python3判断url链接是否为404的方法
Aug 10 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
python实现串口通信的示例代码
Feb 10 Python
Python根据指定文件生成XML的方法
Jun 29 Python
导致python中import错误的原因是什么
Jul 01 Python
python3 中使用urllib问题以及urllib详解
Aug 03 Python
基于OpenCV的路面质量检测的实现
Nov 04 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
Look And Say 序列php实现代码
2011/05/22 PHP
php获取参数的几种方法总结
2014/02/18 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
PHP7 其他修改
2021/03/09 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
python解析xml简单示例
2019/06/21 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
django中media媒体路径设置的步骤
2019/11/15 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
Keras自定义IOU方式
2020/06/10 Python
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
最新党员的自我评价分享
2013/11/04 职场文书
民事辩护词范文
2015/05/21 职场文书
歌舞青春观后感
2015/06/10 职场文书
北京青年观后感
2015/06/15 职场文书