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 文件和路径操作函数小结
Nov 23 Python
zbar解码二维码和条形码示例
Feb 07 Python
python相似模块用例
Mar 04 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 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连接mssql的一些相关经验及注意事项
2013/02/05 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
制作特殊字的脚本
2006/06/26 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
Python之修改图片像素值的方法
2019/07/03 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
利用python 下载bilibili视频
2020/11/13 Python
Python对excel的基本操作方法
2021/02/18 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
刊首寄语大全
2014/04/11 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技