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保存MongoDB上的文件到本地的方法
Mar 16 Python
python中的字典使用分享
Jul 31 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
Python中的TCP socket写法示例
May 11 Python
python 编写简单网页服务器的实例
Jun 01 Python
python中实现控制小数点位数的方法
Jan 24 Python
python时间序列按频率生成日期的方法
May 14 Python
python3.6生成器yield用法实例分析
Aug 23 Python
浅析python redis的连接及相关操作
Nov 07 Python
Python底层封装实现方法详解
Jan 22 Python
python实现四人制扑克牌游戏
Apr 22 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获取中文拼音首字母类和函数分享
2014/04/24 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
Python递归遍历列表及输出的实现方法
2015/05/19 Python
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
入党自我评价优缺点
2014/01/25 职场文书
行政专员求职信范文
2014/05/03 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
代办社保委托书范文
2014/10/06 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
征求意见函
2015/06/05 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
基于Python实现股票收益率分析
2022/04/02 Python
如何利用python实现Simhash算法
2022/06/28 Python