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批量按比例缩小图片脚本分享
May 21 Python
Python计算三维矢量幅度的方法
Jun 15 Python
用Python编写简单的微博爬虫
Mar 04 Python
详解Python迭代和迭代器
Mar 28 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
python爬取哈尔滨天气信息
Jul 14 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
python的常用模块之collections模块详解
Dec 06 Python
基于Python的ModbusTCP客户端实现详解
Jul 13 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
Python实现代码统计工具
Sep 19 Python
python之生成多层json结构的实现
Feb 27 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获取twitter最新消息的方法
2015/04/14 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
javascript 动态创建表格
2015/01/08 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
Vue 全局loading组件实例详解
2018/05/29 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
vue中轮训器的使用
2019/01/27 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
分享15个最受欢迎的Python开源框架
2014/07/13 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
小学开学寄语
2014/01/19 职场文书
大学生毕业求职自荐书范文
2014/02/04 职场文书
党员服务承诺书
2014/05/28 职场文书
住房租房协议书
2014/08/20 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS