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调用zxing库生成二维码图片详解
Jan 10 Python
python flask 多对多表查询功能
Jun 25 Python
python素数筛选法浅析
Mar 19 Python
python实现简单登陆系统
Oct 18 Python
Python自动发送邮件的方法实例总结
Dec 08 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 Python
python算的上脚本语言吗
Jun 22 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 Python
Python机器学习之PCA降维算法详解
May 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
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
前端js文件合并的三种方式推荐
2016/05/19 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
使用70行Python代码实现一个递归下降解析器的教程
2015/04/17 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
java判断三位数的实例讲解
2019/06/10 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
上班玩游戏检讨书
2014/02/07 职场文书
病危通知单
2015/04/17 职场文书
同学聚会感言一句话
2015/07/30 职场文书
车间班组长竞聘书
2015/09/15 职场文书
九年级英语教学反思
2016/02/15 职场文书
win10下go mod配置方式
2021/04/25 Golang
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
mysql的单列多值存储实例详解
2022/04/05 MySQL
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技