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 相关文章推荐
Python3 正在毁灭 Python的原因分析
Nov 28 Python
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
python模拟enum枚举类型的方法小结
Apr 30 Python
python自动12306抢票软件实现代码
Feb 24 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
python实现智能语音天气预报
Dec 02 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
图神经网络GNN算法
May 11 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
php Smarty 字符比较代码
2011/02/27 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
Javascript计算时间差的函数分享
2011/07/04 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
flask实现验证码并验证功能
2019/12/05 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
tensorflow 模型权重导出实例
2020/01/24 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
印尼旅游网站:via
2017/11/12 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
物业招聘计划书
2014/01/10 职场文书
元旦活动感言
2014/03/08 职场文书
银行求职信怎么写
2019/06/20 职场文书