Python操作JSON格式数据的技巧【20210411】

发表于 2021-04-10
阅读 67

介绍

介绍

JSON格式数据是现如今使用极其广泛的WEB应用的数据格式,它有着结构清晰、语法简单、占用字节少等等特点。相比较早期流行的XML格式数据来讲,JSON格式数据有着更加轻便、可读性更好、解析速度更快等等优势。

Python语言操作JSON格式数据是比较方便的,因为Python是弱类型语言,而且Python本身就有字典(dict)类型和数组(list)类型对应JSON格式数据,所以Python操作JSON格式数据非常的简单、方便、快捷。

JSON

JSON格式数据除了基本数据类型整型、浮点、字符串、布尔之外,还有两个特殊的集合型类型,它们就是数组(Array)和字典(Dictionary),下面福哥将分别给大家介绍一下。

字典

所谓的字典类型就是结构内的数据是以Key-Value的方式成对的存储的,通过Key可以快速地得到对应的Value,一个字典结构内Key不能重复。

{
  "id": 35,
  "name": "鬼谷子叔叔",
  "url": "https://tongfu.net/home/35.html"
}

数组

数组就是用来存储多个数据的集合,数组内的元素之间没有任何关系,数组内的元素以顺序的整型数字作为键,通过键可以快速地得到对应的元素。

[
  "PHP",
  "Python",
  "Java",
  "JavaScript",
  "C/C++",
  "Asp.net"
]

安装

在Python语言里操作JSON格式数据是通过json这个库完成的,这个库是内建的库,可以直接导入使用。

import json

数组与JSON

在Python语言里面数组转换JSON格式数据是通过json对象的dumps方法完成的,Python的数组转换到JSON格式数据会毫无悬念的转换为JSON格式的数组,因为Python虽然是弱类型语言但是数组(list)类型也必须符合顺序整型数字的规范。

直接转换

如果直接通过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)

home/topic/2021/0411/23/aeb54a4e482254c2c0e28a528df64242.jpg

转换显示汉字

如果想要保留汉字内容,不转换成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)

home/topic/2021/0411/23/b58b97c7afa61eec308abcb001140fff.jpg

字典与JSON

在Python语言里面字典转换JSON格式数据也是通过json.dumps函数完成的,Python的字典转换到JSON格式数据也是一定会转换成字典类型的。

直接转换

如果直接通过json.dumps转换的话,汉字部分会被转换成unicode码。

jsonData = json.dumps({
    "id": "35",
    "name": "鬼谷子叔叔",
    "url:": "https://tongfu.net/home/35.html"
}, encoding="gbk")

print(jsonData)

home/topic/2021/0411/23/74321c855ef56c5e7c75ddfc2e85ce33.jpg

转换显示汉字

如果想要保留汉字内容,不转换成unicode码,需要使用如下的方式进行转换。

jsonData = json.dumps({
    "id": "35",
    "name": "鬼谷子叔叔",
    "url:": "https://tongfu.net/home/35.html"
}, encoding="gbk", ensure_ascii=False)

print(jsonData)

home/topic/2021/0411/23/e59448ef9e079d7c42f6c8b3b54ba221.jpg

编码与解码

编码

所谓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)

home/topic/2021/0411/23/336698c25d9ae9553594e35b82d76efe.jpg

解码

所谓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"])

home/topic/2021/0411/23/6cf9ce0e2b639ab5b7625abc7e7d8ea7.jpg

总结

今天福哥带着童鞋们针对Python操作JSON格式数据的技巧系统地讲解了一番,相信大家都应该听明白了!会操作JSON格式数据了就可以使用Python开发接口客户端程序了,这也是Python语言最常用的领域之一了。

下一课福哥会给大家讲解Java操作JSON格式数据的技巧,敬请期待~~