JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。这篇文章主要从以下几个方面来说明JSON。
1,JSON的两种结构
2,认识JSON字符串
JSON的两种结构
JSON有两种表示结构,对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。
{
key1:value1,
key2:value2,
...
}
其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组
数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
认识JSON字符串
之前我一直有个困惑,分不清普通字符串,json字符串和json对象的区别。经过一番研究终于给弄明白了。比如在js中。
字符串:这个很好解释,指使用“”双引号或’’单引号包括的字符。例如:var comStr = 'this is string';
json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
json对象:指符合json格式要求的js对象。例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };
注意:我们在写入文件中的数据,只能是字符串,但是如果要想把内存的数据对象存到硬盘上去怎么办呐?
总结:如果是从文件中读数据,就用json.load,因为文件中的数据都是字符串类型,要把字符串转成json类型;如果是把内存中的东西,写入到文件中,就需要把json类型转换成字符串类型,用json.jump
dump()
import json
info = {
'name':"zhangqigao",
"age":22
}
with open("test.txt","w") as f: #文件以写的方式打开
json.dump(info,f) #第1个参数是内存的数据对象 ,第2个参数是文件句柄
#text.txt文件中的内容
{"name": "zhangqigao", "age": 22}
load()反序列化
import json
with open("test.txt","r") as f: #以读的方式打开文件
data = json.load(f) #输入文件对象
print(data.get("age"))
#输出
22
json与dict的区别
- Python 的dict是一种数据结构,json 是一种数据传输格式
- Python的dict的key可以是任意可hash对象,json只能是字符串。形式上有些相像,但json是纯文本的,无法直接操作
- json的格式要求必须且只能使用双引号作为key或者值的边界符号,不能使用单引号,但dict就无所谓了。
- python的dict的Key是唯一的,而json的Key可以重复。