JSON

4.8 JSON

4.8.1 JSON简介

JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON数据不是Python中自带的一种数据类型,但是在Python编程中会经常用到这种数据类型。
JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。
JSON 是存储和交换文本信息的语法,类似 XML。JSON 比 XML 更小、更快,更易解析。
JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
JSON 具有自我描述性,更易理解。

我们提供的服务有:成都做网站、成都网站建设、微信公众号开发、网站优化、网站认证、历下ssl等。为超过千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的历下网站制作公司

4.8.1.1 与 XML 相同之处

  • JSON 是纯文本
  • JSON 具有自我描述性(人类可读)
  • JSON 具有层级结构(值中存在值)
  • JSON 可通过 JavaScript 进行解析
  • JSON 数据可使用 AJAX 进行传输

4.8.1.2 与 XML 不同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的 JavaScript eval() 方法进行解析
  • 使用数组
  • 不使用保留字

4.8.2 JSON语法

JSON 语法是 JavaScript 语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 大括号 {} 保存对象
  • 中括号 [] 保存数组,数组可以包含多个对象

4.8.2.1 JSON 值

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在中括号中)
  • 对象(在大括号中)
  • null

4.8.3 Python3中使用JSON

通过上面对JSON数据的介绍,我们可以发现JSON数据其实和Python中的字典非常类似。
Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
json.dumps(): 对数据进行编码。Python→JSON
json.loads(): 对数据进行解码。JSON→Python
在 json 的编解码过程中,Python 的原始类型与 json 类型会相互转换,具体的转化对照如下:
Python 编码为 JSON 类型转换对应表:

Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

JSON 解码为 Python 类型转换对应表:

JSON Python
object dict
array list
string str
number(int) int
number(real) float
true True
false False
null None

4.8.3.1 Python字典转换为JSON对象

import json

data = {
    'no': 1,
    'name': 'zhangsan'
}

json_str = json.dumps(data)
print("Python原始数据:", data)
print("      JSON对象:", json_str)

Python原始数据: {'no': 1, 'name': 'zhangsan'}
JSON对象: {"no": 1, "name": "zhangsan"}

4.8.3.2 JSON对象转换为Python字典

import json

data = {
    'no': 1,
    'name': 'zhangsan'
}

json_str = json.dumps(data)
print("Python原始数据:", data)
print("     JSON对象:", json_str)
py_data = json.loads(json_str)
print(py_data['name'])

Python原始数据: {'no': 1, 'name': 'zhangsan'}
JSON对象: {"no": 1, "name": "zhangsan"}
zhangsan

4.8.3.3 JSON数据读取或写入到文件中

# 写入 JSON 数据
with open('data.json', 'w') as f:
    json.dump(data, f)
 
# 读取数据
with open('data.json', 'r') as f:
    data = json.load(f)

网页标题:JSON
网页路径:http://scyanting.com/article/dsogede.html