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自动扫雷实现方法
Jul 25 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 Python
python实现mysql的读写分离及负载均衡
Feb 04 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
python3.x上post发送json数据
Mar 04 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 Python
Django渲染Markdown文章目录的方法示例
Jan 02 Python
python实现连续变量最优分箱详解--CART算法
Nov 22 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 Python
python 闭包函数详细介绍
Apr 19 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 curl post 时出现的问题解决
2014/01/30 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
javascript的console.log()用法小结
2012/05/31 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
JS随机密码生成算法
2019/09/23 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
python调用java的Webservice示例
2014/03/10 Python
Python生成随机密码
2015/03/10 Python
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
python difflib模块示例讲解
2017/09/13 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
奥巴马的演讲稿
2014/05/15 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书