Python 中的json字符串以及使用

1.什么是JSON

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

1.1JSON的两种表示结构

JSON有两种表示结构,对象和数组

(1)对象

以” { ”大括号开始,以” } ”大括号结束。中间部分由0或多个以” ,”分隔的 ”key(关键字)/value(值)” 对构成,关键字和值之间以” :”分隔,语法结构如代码。

{
    key1:value1,
    key2:value2,
    ...
}

注意:
1️⃣JSON中关键字key只能是字符串,
2️⃣而值value可以是字符串,数值,true,false,null,对象或数组 

(2)数组

以” [ ”开始,” ] ” 结束。中间由0或多个以” ,”分隔的值列表组成,语法结构如代码。

[
    {
        key1:value1,
        key2:value2 
    },
    {
         key3:value3,
         key4:value4   
    }
]

1.2JOSN字符串和JSON对象的区别

之前我一直有个困惑,分不清普通字符串,json字符串和json对象的区别。经过一番研究终于给弄明白了。比如在js中。

(1)普通字符串:

这个很好解释,指使用“”双引号或’’单引号包括的字符。例如:

Str = 'this is string’

(2)JSON字符串:

指的是符合json格式要求的js字符串。例如:

json_Str = "{"StudentID":100,"Name":"tmac","Hometown":"usa"}"

ps:就是使用”“包裹的json格式,叫json字符串

(3)JSON对象:

指符合json格式要求的js对象。例如:

{ "StudentID": 100, "Name": "tmac", "Hometown": "usa" }

1.3python数据类型与json数据类型的映射关系 

2. json和Python的字典的区别

       从形式上看,json对象和字典都是“Key:Value”的形式。

       从本质上讲,字典是一种数据结构,而json是一种数据格式;字典有很多内置函数,有多种调用方法,而json是数据打包的一种格式,并不像字典具备操作性,并且是格式就会有一些形式上的限制,比如json的格式要求必须且只能使用双引号作为key或者值的边界符号,不能使用单引号,而且“key”必须使用边界符(双引号),但字典就无所谓了。

2.1 json 和 字典的相互转换

函数 描述
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 <class 'dict'>
#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 <class 'str'>#类型变为了字符串
#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 <class 'dict'>

3.在Python中如何使用json

3.1.dumps 和 loads 

函数 描述
json.dumps 将 Python 对象编码成 JSON 字符串
json.loads 将已编码的 JSON 字符串解码为 Python 对象

3.2 json.dump()和json.load()主要用来读写json文件函数

举例说明:

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)

猜你喜欢

转载自blog.csdn.net/u013528298/article/details/104479111