JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON有两种表示结构,对象和数组
以” { ”大括号开始,以” } ”大括号结束。中间部分由0或多个以” ,”分隔的 ”key(关键字)/value(值)” 对构成,关键字和值之间以” :”分隔,语法结构如代码。
{
key1:value1,
key2:value2,
...
}
注意:
1️⃣JSON中关键字key只能是字符串,
2️⃣而值value可以是字符串,数值,true,false,null,对象或数组
以” [ ”开始,” ] ” 结束。中间由0或多个以” ,”分隔的值列表组成,语法结构如代码。
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
之前我一直有个困惑,分不清普通字符串,json字符串和json对象的区别。经过一番研究终于给弄明白了。比如在js中。
这个很好解释,指使用“”双引号或’’单引号包括的字符。例如:
Str = 'this is string’
(2)JSON字符串:
指的是符合json格式要求的js字符串。例如:
json_Str = "{"StudentID":100,"Name":"tmac","Hometown":"usa"}"
ps:就是使用”“包裹的json格式,叫json字符串
指符合json格式要求的js对象。例如:
{ "StudentID": 100, "Name": "tmac", "Hometown": "usa" }
从形式上看,json对象和字典都是“Key:Value”的形式。
从本质上讲,字典是一种数据结构,而json是一种数据格式;字典有很多内置函数,有多种调用方法,而json是数据打包的一种格式,并不像字典具备操作性,并且是格式就会有一些形式上的限制,比如json的格式要求必须且只能使用双引号作为key或者值的边界符号,不能使用单引号,而且“key”必须使用边界符(双引号),但字典就无所谓了。
函数 | 描述 |
---|---|
json.dumps | 将 Python 对象编码成 JSON 字符串 |
json.loads | 将已编码的 JSON 字符串解码为 Python 对象 |
import Json
#1.创建一个新的字典
a_dict = {"a":1,"b":2}
print("type of a_dict is {}".format(type(a_dict)))
>>type of a_dict is
#2.将 Python 对象编码成 JSON 字符串
a_json = json.dumps(a_dict)
print(a_json)
>>{"a": 1, "b": 2}
print("type of a_json is {}".format(type(a_json)))
>>type of a_json is #类型变为了字符串
#3.将json字符串解码成为 Python对象
new_dict = json.loads(a_json)
print(new_dict)
print("type of new_dict is {}".format(type(new_dict)))
>>type of new_dict is
函数 | 描述 |
---|---|
json.dumps | 将 Python 对象编码成 JSON 字符串 |
json.loads | 将已编码的 JSON 字符串解码为 Python 对象 |
举例说明:
import json,time
# save data to json file
def store(data):
with open('data.json', 'w') as fw:
# 将字典转化为字符串
# json_str = json.dumps(data)
# fw.write(json_str)
# 上面两句等同于下面这句
json.dump(data,fw)
# load json data from file
def load():
with open('data.json','r') as f:
data = json.load(f)
return data
if __name__ == "__main__":
json_data = '{"login":[{"username":"aa","password":"001"},{"username":"bb","password":"002"}],"register":[{"username":"cc","password":"003"},{"username":"dd","password":"004"}]}'
# 函数是将json格式数据转换为字典
data = json.loads(json_data)
store(data)
data = load()
print(data)