我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python的json模块怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python的json模块怎么使用

这篇文章主要介绍“python的json模块怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python的json模块怎么使用”文章能帮助大家解决问题。

一、概述

推荐使用参考网站: json

在python中,json模块可以实现json数据的序列化和反序列化

  • 序列化:将可存放在内存中的python 对象转换成可物理存储和传递的形式

  • 实现方法:load() loads()

  • 反序列化:将可物理存储和传递的json数据形式转换为在内存中表示的python对象

  • 实现方法:dump() dumps()

二、方法详解

1.dump()

def dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True,        allow_nan=True, cls=None, indent=None, separators=None,        default=None, sort_keys=False, **kw):
  • 把python对象obj转换成物理表现形式fp流。其中fp的.write()可以支持写入类文件中

  • 如果skipkeys是true,那么在处理json对象的时候,仅支持 (str, int, float, bool, None) 这些基本类型的key,如果有非基本类型,就会抛出TypeError异常;如果值为false,那么对于非基本类型,则会抛出TypeError;默认值为false

  • 如果ensure_ascii是true,那么obj中字符在写入fp的时候,非ascii字符会被进行转义;如果值为false,那么对于这些非ascii字符不会进行转义,会原样写入;默认值为true

  • 如果check_circular是false,那么遇到container类型(list,dict,自定义编码类型)的时候,不会循环引用检查,一旦是循环引用,结果就是OverflowError;如果值为true,那么会对container类型进行循环引用检查,检查失败会 raise ValueError(“Circular reference detected”);默认值是true

  • 如果allow_nan是false,严格遵守json的规范,对于序列化一些超出float范围的值(nan, inf, -inf)的时候,会抛出ValueError;如果值为true,那么超过float范围的值将会使用在JavaScript中的等效值(NaN, Infinity, -Infinity);默认值为true

  • 如果indent是一个non-negative (正)整数,那么json中的数组元素和对象元素都将会使用indent单位缩进格式来进行输出;值为0的时候,就只会插入一个换行符;值为None的时候,会输出最紧凑的格式

  • separators的指定是以元组(item_separator, key_separator)的方式;如果indent=‘None’ 那么该选项的默认值为(', ', ': '),否则该选项的默认值为(',', ': ');如果想要紧凑的json表达,那么应该使用(',', ': ')来去除空格

  • default(obj)是一个函数,主要是针对于那些无法被直接序列化的对象。该参数可以提供一个默认的序列化版本,否则就会抛出一个TypeError。默认是抛出TypeError

  • 如果sort_keys是true,那么输出的时候会根据key进行排序,默认值是false可以指定一个JSONEncoder的子类,来序列化其他的类型,可以通过cls或者是JSONEncoder参数来指定

2.dumps

def dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,        allow_nan=True, cls=None, indent=None, separators=None,        default=None, sort_keys=False, **kw):

把obj序列化成一个json格式的字符串,并返回该字符串支持的python内置可进行json序列化的类型有(str, int, float, bool, None,list,tuple,dict)如果无法序列化的类型,会抛出TypeError

python的json模块怎么使用

其他参数同上解释

3.load

def load(fp, *, cls=None, object_hook=None, parse_float=None,        parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
  • 把物理表现形式fp流(fp.read()的返回需要是一个json格式)反序列化成一个python对象

  • object_hook是一个可选的函数,主要用来对直接反序列化之后的结果进行二次加工;object_hook的参数只有一个,是dict,该dict也是反序列化的直接结果;object_hook的返回值为load方法的返回值 ;这个功能一般是用来自定义解码器,例如JSON-RPC

  • object_pairs_hook是一个可选的函数,主要用来对直接反序列化之后的结果进行二次加工;object_pairs_hook的参数只有一个,是list(tuple),该list(tuple)也是反序列化的直接结果;object_pairs_hook的返回值为load方法的返回值 ;这个功能一般是用来自定义解码器,例如JSON-RPC;在同时指定了object_hook和object_pairs_hook的时候,object_pairs_hook的优先级高于object_hook

python的json模块怎么使用

  • cls的关键字参数,支持使用自定义的JSONDecoder的子类;如果不指定,默认使用JSONDecoder

python的json模块怎么使用

4.loads

def loads(s, *, cls=None, object_hook=None, parse_float=None,        parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
  • 反序列化一个s(包含json文本的str,bytes,bytearray的实例对象)到一个python对象

  • object_hook 同上

  • object_pairs_hook同上

  • 4.parse_float 如果定义了,那么会在对json字符串中的每一个float进行解码的时候调用;默认情况下等价于 float(num_str);也可以使用其他的数据类型,如(e.g. decimal.Decimal)

python的json模块怎么使用

  • parse_int 如果定义了,那么会在对json字符串中的每一个float进行解码的时候调用;默认情况下,等价于 int(num_str);也可使用其他针对于json中的integer的datatype或者是parser

python的json模块怎么使用

parse_constant 如果定义了,那么在碰到-Infinity, Infinity, NaN.这些的时候会被调用;如果遇到无效的json符号,会抛出异常

python的json模块怎么使用

python的json模块怎么使用

三、代码实战

1.dumps()

import jsonif __name__ == '__main__':    # 测试格式化非json格式数据    print('-------------测试格式化非json格式数据----------------')    a = json.dumps(2.0)    print(a, type(a))    a = json.dumps(tuple())    print(a, type(a))    a = json.dumps([])    print(a, type(a))    # 测试格式化json格式数据    print('-------------测试格式化json格式数据----------------')    j = {'a': 1, 'b': 6}    a = json.dumps(j)    print(a, type(a))    # 测试skipkeys参数    print('-------------测试skipkeys参数----------------')    j = {'a': 1, tuple(): 6}    a = json.dumps(j, skipkeys=True)    print(a, type(a))    # 测试indent参数    print('-------------测试indent默认参数----------------')    j = {'a': 1, 'b': 234}    a = json.dumps(j)    print(a, type(a))    print('-------------测试indent=0参数----------------')    a = json.dumps(j, indent=0)    print(a, type(a))    print('-------------测试indent=2参数----------------')    a = json.dumps(j, indent=2)    print(a, type(a))    print('-------------测试separators参数----------------')    a = json.dumps(j, separators=('[', ']'))    print(a, type(a))

python的json模块怎么使用

2.dump()

import jsonif __name__ == '__main__':    # 测试格式化非json格式数据    fp = open('./json_dump_data', mode='w')    print('-------------测试格式化非json格式数据----------------')    a = json.dump(2.0, fp)    fp.write('\n')    a = json.dump(tuple(), fp)    a = json.dump([], fp)    fp.write('\n')    # 测试格式化json格式数据    j = {'a': 1, 'b': 6}    a = json.dump(j, fp)

cat json_dump_data:

python的json模块怎么使用

1和2中很多参数都是相同的,这里就不再详述3.load()

import jsonif __name__ == '__main__':    j = open('./json_data', mode='r')    # 测试默认参数    a = json.load(j)    print('-------------测试默认参数----------------')    print(a)    # 测试object_hook参数    j = open('./json_data', mode='r')    a = json.load(j, object_hook=lambda x: x.get('b'))    print('-------------测试object_hook参数----------------')    print(a)    # 测试object_pairs_hook参数    j = open('./json_data', mode='r')    loads = json.load(j, object_pairs_hook=lambda x: print(type(x), type(x[2])))    print('-------------测试object_pairs_hook参数----------------')    print(loads)    # 测试parse_constant参数    j = open('./json_data', mode='r')    loads = json.load(j, parse_constant=lambda x: 'not notification')    print('-------------测试parse_constant参数----------------')    print(loads)    # 测试parse_int参数    j = open('./json_data', mode='r')    loads = json.load(j, parse_int=lambda x: 'cutomer int')    print('-------------测试parse_int参数----------------')    print(loads)    # 测试parse_float参数    j = open('./json_data', mode='r')    loads = json.load(j, parse_float=lambda x: 'cutomer float')    print('-------------测试parse_float参数----------------')    print(loads)

python的json模块怎么使用

注:
因为load方法的底层是调用了fp.read(),所以每一次重新调用load的时候都需要重新打开文件句柄。不然就会导致在第二次调用load方法的时候,就会因为fp.read()返回的是none就导致异常

4.loads()

import jsonif __name__ == '__main__':    j = '{"a":1,"b":2.0,"c":Infinity}'    # 测试默认参数    a = json.loads(j)    print('-------------测试默认参数----------------')    print(a)    # 测试object_hook参数    a = json.loads(j, object_hook=lambda x: x.get('b'))    print('-------------测试object_hook参数----------------')    print(a)    # 测试object_pairs_hook参数    loads = json.loads(j, object_pairs_hook=lambda x: print(type(x), type(x[2])))    print('-------------测试object_pairs_hook参数----------------')    print(loads)    # 测试parse_constant参数    loads = json.loads(j, parse_constant=lambda x: 'not notification')    print('-------------测试parse_constant参数----------------')    print(loads)    # 测试parse_int参数    loads = json.loads(j, parse_int=lambda x: 'cutomer int')    print('-------------测试parse_int参数----------------')    print(loads)    # 测试parse_float参数    loads = json.loads(j, parse_float=lambda x: 'cutomer float')    print('-------------测试parse_float参数----------------')    print(loads)

python的json模块怎么使用

关于“python的json模块怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python的json模块怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python的json模块怎么使用

这篇文章主要介绍“python的json模块怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python的json模块怎么使用”文章能帮助大家解决问题。一、概述推荐使用参考网站: json在p
2023-06-30

Python JSON模块怎么使用

本篇内容主要讲解“Python JSON模块怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python JSON模块怎么使用”吧!1.dumps( )将Python数据转成JSON格式转
2023-06-25

python标准库模块之json库怎么使用

今天小编给大家分享一下python标准库模块之json库怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言json,
2023-07-02

Python序列化模块之pickle与json怎么使用

本篇内容主要讲解“Python序列化模块之pickle与json怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python序列化模块之pickle与json怎么使用”吧!序列化模块imp
2023-06-30

python中的json模块

json模块JSON就是JavaScript Object Notation,这个模块完成了python对象和JSON字符串的互相转换! json是一种很多语言支持的通用语言作用:如下,作为一个桥梁 在api接口中数据调用传输中常用php数
2023-01-31

Python 中 的 json 模块

python 中的json 模板主要的两个功能:序列化和反序列化序列化: encoding   将python 数据 编码成json 字符串对应的函数有 dump 和 dumps反序列化: decoding  将json 字符串 解码成 p
2023-01-31

Python怎么使用模块

这篇文章给大家分享的是有关Python怎么使用模块的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.1 导入模块import 模块名form 模块名import 功能名form 模块名 import *impor
2023-06-22

python的xlrd模块怎么使用

这篇文章主要介绍“python的xlrd模块怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python的xlrd模块怎么使用”文章能帮助大家解决问题。xlrd是python语言中用于读取ex
2023-06-27

python的os模块怎么使用

本篇内容介绍了“python的os模块怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!os模块提供了多数操作系统的功能接口函数。当os
2023-06-27

Python requests模块怎么使用

本文小编为大家详细介绍“Python requests模块怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python requests模块怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.准备工
2023-07-05

python webbrowser模块怎么使用

要使用Python的webbrowser模块,需要先导入该模块:```pythonimport webbrowser```然后可以使用webbrowser模块提供的函数来打开指定的URL或文件。下面是一些常用函数的示例:1. `webbro
2023-08-24

Python webargs模块怎么使用

今天小编给大家分享一下Python webargs模块怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。webargs是
2023-06-28

怎么使用Python模块os

本篇内容主要讲解“怎么使用Python模块os”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python模块os”吧!os.getcwd()返回当前工作目录绝对路径Python 3.7.
2023-06-02

python IPy模块怎么使用

本文小编为大家详细介绍“python IPy模块怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“python IPy模块怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。IPy模块包含IP类,可以方便
2023-06-28

Python configparser模块怎么使用

本文小编为大家详细介绍“Python configparser模块怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python configparser模块怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
2023-07-04

python parser模块怎么使用

Python的parser模块是用来解析语法的工具,可以根据给定的语法规则将字符串解析为Python对象。在Python中,有两种常用的parser模块,分别是`ast`和`ply`。1. 使用`ast`模块:- 首先需要导入`ast`模块
2023-09-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录