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发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 Python
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
Python threading多线程编程实例
Sep 18 Python
非递归的输出1-N的全排列实例(推荐)
Apr 11 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
Python OpenCV读取中文路径图像的方法
Jul 02 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
python Cartopy的基础使用详解
Nov 01 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 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下删除一篇文章生成的多个静态页面
2010/08/08 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
Python定时器实例代码
2017/11/01 Python
微信跳一跳python代码实现
2018/01/05 Python
python中cPickle类使用方法详解
2018/08/27 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
Python如何解除一个装饰器
2020/08/07 Python
python Scrapy框架原理解析
2021/01/04 Python
python生成word合同的实例方法
2021/01/12 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
百日安全活动总结
2014/05/04 职场文书
五一劳动节慰问信
2015/02/14 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
Linux安装Docker详细教程
2022/07/07 Servers