Python JSON的解析和创建
创始人
2024-02-07 20:04:14
0次

文章目录

  • Python JSON的解析和创建
  • json.dumps()
  • json.loads()


Python JSON的解析和创建

本节我们来介绍一下如何使用 Python 来创建和解析 JSON 数据。

与 PHP 类似,Python 中同样提供了两个函数来分别创建和解析 JSON 数据,注意:本节是基于 Python3 进行介绍的:

  • json.dumps():将 Python 对象转换为 JSON 数据;
  • json.loads():将 JSON 数据解析为 Python 对象。

json.dumps()

在 Python 中,您可以使用 json.dumps() 函数将 Python 对象转换为 JSON 数据,语法格式如下:

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding=“utf-8”, default=None, sort_keys=False, **kw)

参数说明如下:

  • obj:要转换为 JSON 数据的 Python 对象;
  • skipkeys:默认值为 False,如果 dict 中 keys 内的数据不是 Python 的基本类型(str、unicode、int、long、float、bool、None),会报 TypeError 错误,若设置为 True,则会跳过这类 key;
  • ensure_ascii:默认值 True,即输出 ASCLL 码,若设置为 False,则可以输出中文;
  • check_circular:如果值为 False,则跳过对容器类型的循环引用检查,循环引用将导致溢出错误;
  • allow_nan:默认值 True,在处理 JSON 规范以外的 Float 类型时(例如:nan、inf、-inf),将其转换为 JavaScript 中的等价类型(例如:NaN、Infinity、-Infinity),若设置为 False,则会引发一个 ValueError 错误,
  • cls:用来指定一个自定义的 JSONEncoder 子类,来替换 JSONCoder 类;
  • indent:按照给定数值,将数据缩进显示,让数据读起来更加清晰;
  • separators:分隔符,分别设置不同 dict 项之间的分隔符和 dict 项内 key 与 value 之间的分隔符,并将冒号 : 与逗号, 之后的空格全部去除;
  • encoding:设置 JSON 数据的编码方式,默认为 UTF-8;
  • default:指定一个函数,当某个对象无法被序列化时会调用该函数;
  • sort_keys:若值为 Ture,则表示按照 dict 排序(a 到 z)输出。

示例代码如下:

import json
dictionary = {"title":"JSON教程","author":"C语言中文网","url":"http://c.biancheng.net/","catalogue":["JSON是什么?","JSONP是什么?","JSON语法规则"]}
jsonString = json.dumps(dictionary, indent=4, ensure_ascii=False)
print(jsonString)

运行结果如下:

{"title": "JSON教程","author": "C语言中文网","url": "http://c.biancheng.net/","catalogue": ["JSON是什么?","JSONP是什么?","JSON语法规则"]
}

json.loads()

在 Python 中,您可以使用 json.loads() 函数将 JSON 数据转换为 Python 对象,语法格式如下:

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

参数说明如下:

  • s:要转换的 JSON 数据,可以是 str、bytes 或 bytearray 等类型;
  • encoding:可选参数,设置 JSON 数据的编码方式,默认为 UTF-8;
  • cls:可选参数,用于指定一个自定义 JSONCoder 的子类,来替换 JSONCoder 类;
  • object_hook:可选参数,将函数的返回值替换为指定的类型,该功能可以用来实现自定义解码器,例如 JSON-RPC;
  • parse_float:可选参数,如果指定该参数,那么在解码 JSON 数据时,符合 float 类型的字符串将转换为指定的类型;
  • parse_int:可选参数,如果指定该参数,那么在解码 JSON 数据时,符合 int 类型的字符串将转换为指定的类型;
  • parse_constant:可选参数,如果指定该参数,那么在解码 JSON 数据时,若出现 -Infinity、Infinity、NaN 等字符串,则调用指定的方法;
  • object_pairs_hook:可选参数,将结果以 key-value 有序列表的形式返回,如果 object_hook 和 object_pairs_hook 同时指定的话,优先按照 object_pairs_hook 的设置返回。

示例代码如下:

import json
json_str = '{"title":"JSON教程","author":"C语言中文网","url":"http://c.biancheng.net/","catalogue":["JSON是什么?","JSONP是什么?","JSON语法规则"]}'
data = json.loads(json_str)
print(data)

运行结果如下:

{‘title’: ‘JSON教程’, ‘author’: ‘C语言中文网’, ‘url’: ‘http://c.biancheng.net/’, ‘catalogue’: [‘JSON是什么?’, ‘JSONP是 什么?’, ‘JSON语法规则’]}

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...