Python中Json使用示例详解

 更新时间:2022年07月23日 14:52:45   作者:AskaJohnny  
这篇文章主要介绍了Python中Json使用,主要介绍一下python 中 json的使用 如何把dict转成json 、object 转成json 、以及json转成对象,需要的朋友可以参考下

Python Json使用

本篇主要介绍一下 python 中 json的使用 如何把 dict转成json 、object 转成json 、以及json转成对象 等等。。

json是非常常用的一种数据格式,比如在前后端分离的 web开发中,返回给前端 通常都会使用json ,那么来看看 python 中如何玩转json

1.dict 转成 json (json.dumps(dict))

注意: ensure_ascii=False 否则中文乱码

import json
 student = {
     'name': 'johnny',
     'age': 27,
     'address': '无锡'
 }
 print(json.dumps(student, ensure_ascii=False))
# {"name": "johnny", "age": 27, "address": "无锡"}  json

2.json 转 dict (json.loads(jsonstr))

import json
json_student = '{"name": "johnny", "age": 27, "address": "无锡"}'
print(json.loads(json_student))
# {'name': 'johnny', 'age': 27, 'address': '无锡'} 字典dict

3. 类对象转 json (dict属性/提供default=方法)

3.1 错误使用

注意:json.dumps() 不支持 直接把 类对象放进去!!! 会报错 Student is not JSON serializable

import json
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
student = Student('candy', '30')
#错误使用!!!
print(json.dumps(student))  报错!!! TypeError: Object of type Student is not JSON serializable

3.2 使用类对象 dict 属性

#正确使用!!!
print(json.dumps(student.__dict__))) #可以使用 类对象的 __dict__ 属性
#{"name": "candy", "age": "30"}

3.3 提供一个 convert2json 方法

default=指定方法

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    @staticmethod
    def conver2json(self):
        return {
            'name': self.name,
            'age': self.age
        }
#通过自己写一个 conver2json方法 去手动转化一下 把 类对象转成json 
print(json.dumps(student,default=Student.conver2json))

4.json 转 类对象 (json.loads(jsonstr,object_hook=..))

注意:json.loads 默认只会转成dict,需要自己提供方法 把dict 转成 类对象

import json
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    @staticmethod
    def conver2json(self):
        return {
            'name': self.name,
            'age': self.age
        }
    @staticmethod
    def convert2object(dict):
        return Student(dict['name'],dict['age'])
json_student = '{"name": "johnny", "age": 27, "address": "无锡"}'
print(json.loads(json_student,object_hook=Student.convert2object))
#<__main__.Student

5. dict/对象 转为 json文件 (json.dump(student,f))

注意 dump 还是 只能接收 dict ,如果要把 对象写到json中 需要先把对象 转成 dict ,可以通过 ——dict——属性

student = {
    'name': 'johnny',
    'age': 27,
    'address': '无锡'
}
with open('student.json','w') as f:
    json.dump(student,f,ensure_ascii=False)

6. json文件转 dict /对象 (json.load)

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

小疑问

为什么:转成json 后 name 是一个数组呢? 因为 self.name = name, 后面有一个 逗号,。。。 会把这个name当成元组 ,元组转成 json 就是 数组!!!

class Student:
    def __init__(self, name, age):
        self.name = name,  #这里!!!不能有 逗号。。 
        self.age = age
student = Student('candy', '30')
print(json.dumps(student.__dict__))
#猜猜它的打印是什么 
#{"name": ["candy"], "age": "30"}   

总结

  • json.dumps() 只支持 dict转json 如果是 class 对象 需要 通过 dict属性或者提供default= conver2json 方法
  • json.dump() 是写入 文件中
  • json.loads() 只支持把 json str转成 dict ,如果要转成 class 对象 则需要提供 object_hook=convert2object方法
  • json.load()/ 是从文件中读取 jsonstr 到 dict

很简单 注意一下 class 和 json 的相互转化即可

参考:https://www.jb51.net/article/256548.htm

到此这篇关于Python中Json使用详解的文章就介绍到这了,更多相关Python Json使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决python3.x安装numpy成功但import出错的问题

    解决python3.x安装numpy成功但import出错的问题

    这篇文章主要介绍了解决python3.x安装numpy成功但import出错的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Python+OpenCv制作证件图片生成器的操作方法

    Python+OpenCv制作证件图片生成器的操作方法

    这篇文章主要介绍了Python+OpenCv制作证件图片生成器的操作方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Python实现快速查找并替换Excel中的数据

    Python实现快速查找并替换Excel中的数据

    Excel中的查找替换是一个非常实用的功能,能够帮助用户快速完成大量数据的整理和处理工作,避免手动逐一修改数据的麻烦,提高工作效率,所以本文给大家介绍了Python实现快速查找并替换Excel中的数据,需要的朋友可以参考下
    2024-06-06
  • 一文带你搞懂Python中isinstance和type的区别

    一文带你搞懂Python中isinstance和type的区别

    在Python中,我们经常需要检查一个对象的类型,Python提供了两种方法来获取对象的类型:isinstance和type,这两种方法有什么区别呢,本文将详细介绍这两种方法的区别和使用,需要的朋友可以参考下
    2023-06-06
  • Python实现八皇后问题示例代码

    Python实现八皇后问题示例代码

    这篇文章主要给大家介绍了关于利用Python实现八皇后问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 详解Python如何实现压缩与解压缩数据

    详解Python如何实现压缩与解压缩数据

    当数据量大的时候,自然而然想到的就是对数据进行压缩,这篇文章主要为大家介绍了Python可以实现压缩与解压缩数据的相关模块的使用,希望对大家有所帮助
    2024-02-02
  • Python+pyftpdlib实现局域网文件互传

    Python+pyftpdlib实现局域网文件互传

    这篇文章主要介绍了Python+pyftpdlib实现局域网文件互传,需要的朋友可以参考下
    2020-08-08
  • Anaconda多环境多版本python配置操作方法

    Anaconda多环境多版本python配置操作方法

    下面小编就为大家带来一篇Anaconda多环境多版本python配置操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Python中encode()方法的使用简介

    Python中encode()方法的使用简介

    这篇文章主要介绍了Python中encode()方法的使用简介,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • 很酷的python表白工具 你喜欢我吗

    很酷的python表白工具 你喜欢我吗

    这篇文章主要为大家分享了一款很酷的python表白工具,可以发给女生表白用,界面简单,实用性强,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04

最新评论