JSON教程(纯粹笔记)
JSON教程
JSON:JavaScript Object Notation(JavaScript对象表示法)
JSON是存储和交换文本信息的语法,类型XML。
JSON比XML更小,更快,更易解析。
json实例
{
"sites": [
{ "name":"菜鸟教程" , "url":"www.runoob.com" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"微博" , "url":"www.weibo.com" }
]
}
这个site对象包含3个站点记录(对象)的数组。
一、什么是json
- JSON指的是JavaScript对象表示法
- JSON是轻量级的文本数据交换格式
- JSON独立于语言:虽然JSON使用javascript语法来描述数据对象,但JSON仍然独立于语言和平台。JSON解释器和JSON库支持许多不同的编程语言。目前非常多的编程语言都支持JSON。比如Python,PHP等
二、JSON简介
与 XML 相同之处
- JSON 是纯文本
- JSON 具有"自我描述性"(人类可读)
- JSON 具有层级结构(值中存在值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输
与 XML 不同之处
- 没有结束标签
- 更短
- 读写的速度更快
- 能够使用内建的 JavaScript eval() 方法进行解析
- 使用数组
- 不使用保留字
为什么使用 JSON?
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:
使用 XML
- 读取 XML 文档
- 使用 XML DOM 来循环遍历文档
- 读取值并存储在变量中
使用 JSON
- 读取 JSON 字符串
- 用 eval() 处理 JSON 字符串
三、JSON语法
JSON语法规则
- 数据在 键/值 对中
- 数据由逗号分隔
- 大括号
{}
表示对象 - 中括号
[]
表示数组,数组可以包含多个对象
JSON键值对
书写格式
key: value
例如:看到没,字符串要用双引号包起来
"name": "tom"
JSON值可以是
- 数字(包含整数、浮点数)
- 字符串(要用双引号包起来)
- 逻辑值(true或false)
- 数组(中括号里面)
- 对象(大括号里面)
- null
JSON值为数字
{"age": 18}
{"height": 175.8}
JSON值为对象
json对象写在大括号里面
{
"age": 18,
"height": 175.8
}
JSON值为数组
json数组写在中括号里面
{
"美国大选":[
{
"name": "特朗普",
"票数": 214
},
{
"name": "拜登",
"票数": 264
}
]
}
JSON布尔值
可以是true或者false
{"flag": true}
JSON null
{"name": null}
JSON文件
- JSON文件的文件类型
.json
- JSON文本的MIME类型
application/json
四、JSON对象
对象语法
{
"name": "mahuateng",
"age": 18
}
- JSON对象在大括号中书写
- 对象可以包含多个 键值对
- key必须是字符串,且必须使用双引号引起来;value可以是字符串,数字,对象,数组,布尔值,null
- key和value必须使用冒号分隔
- 每个key/value之间以逗号分隔
python访问对象的值
其实就是python里面的字典,只不过python里面字符串可以用双引号可以用单引号而已
student = {"name": "mahuateng", "age": 18}
student["name"]
#输出
'mahuateng'
python循环对象(遍历字典)
#遍历key
student = {"name": "mahuateng", "age": 18}
for item in student:
print(item)
#遍历value
student = {"name": "mahuateng", "age": 18}
for item in student:
print (student[item])
#或者
student = {"name": "mahuateng", "age": 18}
for k,v in student.items():
print (k,v)
修改
student = {"name": "mahuateng", "age": 18}
student["age"] = 20
删除
student = {"name": "mahuateng", "age": 18}
student.pop("age")
五、JSON数组
{
"name":"网站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]
}
python遍历列表
student = {
"name":"网站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]
}
for item in student["sites"]:
print(item)
删除
fruits = ["apple", "orange", "grape", "kiwi", "mongo", "pineapple", "durian"]
fruits.remove("grape")
六、JSON格式化校验
七、python3 JSON数据解析
- json.dumps() 对数据进行编码
- json.loads() 对数据进行解码
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 |
编码
import json
# Python 字典类型转换为 JSON 对象
data = {
'no' : 1,
'name' : 'Runoob',
'url' : 'http://www.runoob.com'
}
json_str = json.dumps(data)
print ("Python 原始数据:", repr(data))
print ("JSON 对象:", json_str)
#输出
Python 原始数据: {'no': 1, 'name': 'Runoob', 'url': 'http://www.runoob.com'}
JSON 对象: {"no": 1, "name": "Runoob", "url": "http://www.runoob.com"}
解码
import json
# Python 字典类型转换为 JSON 对象
data1 = {
'no' : 1,
'name' : 'Runoob',
'url' : 'http://www.runoob.com'
}
json_str = json.dumps(data1)
print ("Python 原始数据:", repr(data1))
print ("JSON 对象:", json_str)
#输出
Python 原始数据: {'no': 1, 'name': 'Runoob', 'url': 'http://www.runoob.com'}
JSON 对象: {"no": 1, "name": "Runoob", "url": "http://www.runoob.com"}
python命令行美化json
喜欢在线工具的话可以使用在线工具
[root@david SetMachineTag]$ echo '{"json": "obj"}' | python3 -m json.tool
{
"json": "obj"
}
八、js前端加密
javascript代码加密,咱也不懂
在线加密工具:https://www.jsjiami.com/