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深入学习之对象的属性
Aug 31 Python
python实现得到一个给定类的虚函数
Sep 28 Python
Python中一些自然语言工具的使用的入门教程
Apr 13 Python
Python编码爬坑指南(必看)
Jun 10 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
python并发编程多进程 模拟抢票实现过程
Aug 20 Python
python绘制动态曲线教程
Feb 24 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
Django操作cookie的实现
May 26 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不使用插件导出excel的简单方法
2014/03/04 PHP
JS中eval函数的使用示例
2013/07/21 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
python读取注册表中值的方法
2013/04/08 Python
python paramiko实现ssh远程访问的方法
2013/12/03 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python之mock模块基本使用方法详解
2019/06/27 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
python ubplot使用方法解析
2020/01/10 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
2014年学习雷锋活动总结
2014/03/01 职场文书
终止劳动合同协议书
2014/04/14 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
四年级语文教学反思
2016/03/03 职场文书
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技