Python对象转换为json的方法步骤

 更新时间:2019年04月25日 10:42:29   作者:破晓技术部落   我要评论

这篇文章主要介绍了Python对象转换为json的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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?#37096;?#20197;是类对象

dict转换为json

import json

person = {
  'name': 'jack',
  'age': 15,
  'email': '[email protected]'
}


print('dict:', person)

person_json = json.dumps(person) # 转换为json

print('json:', person_json)

输出:

dict: {'name': 'jack', 'age': 15, 'email': '[email protected]'}
json: {"name": "jack", "age": 15, "email": "[email protected]"}

json转换为dict

import json
person_dict = json.loads('{"name": "jack", "age": 15, "email": "[email protected]"}')

print('person dict:', person_dict)

输出:

person dict: {'name': 'jack', 'age': 15, 'email': '[email protected]'}

类对象转换为json

import json

class Person:

  def __init__(self, name, age, email):
    self.name = name
    self.age = age
    self.email = email


person = Person('tom', 38, '[email protected]')

person_json = json.dumps(person.__dict__)

print('person json:', person_json)

输出:

person json: {"name": "tom", "age": 38, "email": "[email protected]"}

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, '[email protected]')

# 第二个参数传递转换函数,或者使用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": "[email protected]"}', object_hook=convert2json)

print('person:', person)

输出:

person: <__main__.Person object at 0x10a7230b8>

loads函数只能将json转换为?#20540;洌?#38656;要我们自己转换为对象。

dict/对象转换为json文件

import 
person = {"name": "tom", "age": 38, "email": "[email protected]"}

with open('person.json', 'w') as f:
  json.dump(person, f)

当前目录下会多一个person.json文件,内容是:

{"name": "tom", "age": 38, "email": "[email protected]"}

将json文件转换为dict/对象

import json
with open('person.json', 'r') as f:
  print(json.load(f))

输出:

{'name': 'tom', 'age': 38, 'email': '[email protected]'}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python机器学习logistic回归代码解析

    Python机器学习logistic回归代码解析

    这篇文章主要介绍了Python机器学习logistic回归代码解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 基于python实现简单日历

    基于python实现简单日历

    这篇文章主要为大家详细介绍了基于python实现简单日历,具有一定的参考价值,感兴趣的小伙伴们可以参?#23478;?#19979;
    2018-07-07
  • 在pycharm中设置显示行数的方法

    在pycharm中设置显示行数的方法

    今天小编就为大家分享一篇在pycharm中设置显示行数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 零基础写python爬虫之爬虫框架Scrapy安装配置

    零基础写python爬虫之爬虫框架Scrapy安装配置

    Scrapy是一个使用Python编写的,轻?#32771;?#30340;,简单轻巧,并且使用起来非常的方便。使用Scrapy可以很方便的完成网上数据的采集工作,它为我们完成了大量的工作,而不需要自己费大力气去开发。
    2014-11-11
  • urllib2自定义opener详解

    urllib2自定义opener详解

    这篇文章主要介绍了urllib2自定义opener详解,需要的朋友可以参考下
    2014-02-02
  • Python读取系统文件?#24515;?#25152;有文件并统计数量的方法

    Python读取系统文件?#24515;?#25152;有文件并统计数量的方法

    今天小编就为大家分享一篇Python读取系统文件?#24515;?#25152;有文件并统计数量的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python实现井字棋游戏

    python实现井字棋游戏

    这篇文章主要介绍了python实现井字棋游戏的相关资料,需要的朋友可以参考下
    2016-02-02
  • 进一步探究Python中的正则表达式

    进一步探究Python中的正则表达式

    这篇文章主要介绍了Python中的正则表达式的一些用法,正则表达式的使用是Python学习进阶中的重要知识,需要的朋友可以参考下
    2015-04-04
  • python中pika模块问题的深入探究

    python中pika模块问题的深入探究

    这篇文章主要给大家介绍了关于python中pika模块问题的相关资?#24076;?#25991;中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • 解决Python 爬虫URL中存在中文或特殊符号无法请求的问题

    解决Python 爬虫URL中存在中文或特殊符号无法请求的问题

    今天小编就为大家分享一篇解决Python 爬虫URL中存在中文或特殊符号无法请求的问题。这种问题,初学者应该都会遇到,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论

时时彩包赢公式0369
体育采票31一7开奖结果查询 20192019西甲赛程 江苏体彩11选5走势图 云南快乐10分开奖 6合彩铁算盘心水论坛 秒速时时彩平台 体育彩票走势图框架 中原风采22选5走势图 北单上下单双玩法 湖南快乐十分开奖视频 三肖中特论坛 2019078期3d开奖号码 海南飞鱼彩票开奖 双色球2019大复式票 内蒙古11选5走势图手机版