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使用flask框架操作sqlite3的两种方式
Jan 31 Python
在Windows中设置Python环境变量的实例讲解
Apr 28 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
Python数据类型之List列表实例详解
May 08 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
flask框架路由常用定义方式总结
Jul 23 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
Python爬虫实例——爬取美团美食数据
Jul 15 Python
python爬取招聘要求等信息实例
Nov 20 Python
Python爬虫简单运用爬取代理IP的实现
Dec 01 Python
python 基于opencv去除图片阴影
Jan 26 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设计模式之迭代器模式的深入解析
2013/06/13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python isinstance函数用法详解
2020/02/13 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
使用Python pip怎么升级pip
2020/08/11 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
人民币使用说明书
2019/04/17 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书