网站首页 > 技术文章 正文
1. 介绍
1.1 介绍
JSON格式数据是现如今使用极其广泛的WEB应用的数据格式,它有着结构清晰、语法简单、占用字节少等等特点。相比较早期流行的XML格式数据来讲,JSON格式数据有着更加轻便、可读性更好、解析速度更快等等优势。
Python语言操作JSON格式数据是比较方便的,因为Python是弱类型语言,而且Python本身就有字典(dict)类型和数组(list)类型对应JSON格式数据,所以Python操作JSON格式数据非常的简单、方便、快捷。
2. JSON
JSON格式数据除了基本数据类型整型、浮点、字符串、布尔之外,还有两个特殊的集合型类型,它们就是数组(Array)和字典(Dictionary),下面福哥将分别给大家介绍一下。
2.1 字典
所谓的字典类型就是结构内的数据是以Key-Value的方式成对的存储的,通过Key可以快速地得到对应的Value,一个字典结构内Key不能重复。
{
"id": 35,
"name": "鬼谷子叔叔",
"url": "https://tongfu.net/home/35.html"
}
2.2 数组
数组就是用来存储多个数据的集合,数组内的元素之间没有任何关系,数组内的元素以顺序的整型数字作为键,通过键可以快速地得到对应的元素。
[
"PHP",
"Python",
"Java",
"JavaScript",
"C/C++",
"Asp.net"
]
3. 安装
在Python语言里操作JSON格式数据是通过json这个库完成的,这个库是内建的库,可以直接导入使用。
import json
4. 数组与JSON
在Python语言里面数组转换JSON格式数据是通过json对象的dumps方法完成的,Python的数组转换到JSON格式数据会毫无悬念的转换为JSON格式的数组,因为Python虽然是弱类型语言但是数组(list)类型也必须符合顺序整型数字的规范。
4.1 直接转换
如果直接通过json.dumps转换的话,汉字部分会被转换成unicode码。
jsonData = json.dumps([
"35",
"鬼谷子叔叔",
"https://tongfu.net/home/35.html"
], encoding="gbk")
print(jsonData)
jsonData = json.dumps([
"PHP",
"Python",
"Java",
"JavaScript",
"C/C++",
"Asp.net"
], encoding="gbk")
print(jsonData)
4.2 转换显示汉字
如果想要保留汉字内容,不转换成unicode码,需要使用如下的方式进行转换。
jsonData = json.dumps([
"35",
"鬼谷子叔叔",
"https://tongfu.net/home/35.html"
], encoding="gbk", ensure_ascii=False)
print(jsonData)
jsonData = json.dumps([
"PHP",
"Python",
"Java",
"JavaScript",
"C/C++",
"Asp.net"
], encoding="gbk", ensure_ascii=False)
print(jsonData)
5. 字典与JSON
在Python语言里面字典转换JSON格式数据也是通过json.dumps函数完成的,Python的字典转换到JSON格式数据也是一定会转换成字典类型的。
5.1 直接转换
如果直接通过json.dumps转换的话,汉字部分会被转换成unicode码。
jsonData = json.dumps({
"id": "35",
"name": "鬼谷子叔叔",
"url:": "https://tongfu.net/home/35.html"
}, encoding="gbk")
print(jsonData)
5.2 转换显示汉字
如果想要保留汉字内容,不转换成unicode码,需要使用如下的方式进行转换。
jsonData = json.dumps({
"id": "35",
"name": "鬼谷子叔叔",
"url:": "https://tongfu.net/home/35.html"
}, encoding="gbk", ensure_ascii=False)
print(jsonData)
6. 编码与解码
6.1 编码
所谓JSON编码就是将其他类型的数据转换成JSON格式数据的过程,因为JSON格式其实就是一个含有特殊格式的字符串,所以JSON编码就是将各种其他类型的数据转成可逆的字符串的过程。
Python实现编码的方式就是通过内建的json对象的dumps方法方法完成的,在进行编码之前我们必须确认源数据的字符编码并通过encoding参数指定出来。
jsonData = json.dumps({
"id": "35",
"name": "鬼谷子叔叔",
"url": "https://tongfu.net/home/35.html"
}, encoding="gbk", ensure_ascii=False)
print("JSON格式")
print("")
print(jsonData)
6.2 解码
所谓JSON解码就是将JSON格式数据还原成原来的数据类型的过程,因为JSON格式数据其实就是一个含有特殊格式的字符串,所以JSON解码就是将JSON格式的字符串还原成原来的数据的过程。
Python实现解码的方式就是通过内建的json对象的loads方法完成的,在进行解码之前我们必须确认JSON格式数据的字符编码并通过encoding参数指定出来。
jsonData = "{\"url\": \"https://tongfu.net/home/35.html\", \"id\": \"35\", \"name\": \"鬼谷子叔叔\"}"
orgData = json.loads(jsonData, encoding="gbk")
print("源数据")
print("")
print(orgData["id"])
print(orgData["name"].encode("gbk"))
print(orgData["url"])
7. 总结
今天福哥带着童鞋们针对Python操作JSON格式数据的技巧系统地讲解了一番,相信大家都应该听明白了!会操作JSON格式数据了就可以使用Python开发接口客户端程序了,这也是Python语言最常用的领域之一了。
下一课福哥会给大家讲解Java操作JSON格式数据的技巧,敬请期待~~
https://m.tongfu.net/home/35/blog/513247.html
猜你喜欢
- 2024-11-11 php+json+mysql实现前后端分离(php vue前后端分离)
- 2024-11-11 PHP中json解析失败原因, json_decode返回null解析失败原因
- 2024-11-11 如何使php的数组传递到js中(如何使php的数组传递到js中)
- 2024-11-11 Linux(centos)用yum方式安装php最新版
- 2024-11-11 PHP 8.3 正式发布!(php8.0新功能)
- 2024-11-11 使用json_encode打印中文字符并且格式化(php代码)
- 2024-11-11 PhpStorm 2022.2 已发布(phpstorm2018)
- 2024-11-11 你不知道的PHP 8.3版本和它的一些有趣的变化
- 2024-11-11 通过WordPress HTTP API 获取json内容并解析
- 2024-11-11 JSON 与 Xml的对决(json vs xml)
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 506℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 486℃MySQL service启动脚本浅析(r12笔记第59天)
- 466℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 464℃启用MySQL查询缓存(mysql8.0查询缓存)
- 444℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 423℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 419℃MySQL server PID file could not be found!失败
- 最近发表
-
- netty系列之:搭建HTTP上传文件服务器
- 让deepseek教我将deepseek接入word
- 前端大文件分片上传断点续传(前端大文件分片上传断点续传怎么操作)
- POST 为什么会发送两次请求?(post+为什么会发送两次请求?怎么回答)
- Jmeter之HTTP请求与响应(jmeter运行http请求没反应)
- WAF-Bypass之SQL注入绕过思路总结
- 用户疯狂点击上传按钮,如何确保只有一个上传任务在执行?
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- HTTP请求的完全过程(http请求的基本过程)
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)