Python知识点记录四(JSON)

JSON: JavaScript Object Notation(JavaScript对象标记)

其本质为“一种轻量级的数据交换格式”。JSON字符串就是JSON的表现形式(载体)。

符合JSON格式的字符串叫做JSON字符串。

JSON的优点(较之XML):易于阅读、易于解析、网络传输效率高。非常适合作为跨语言交换数据。

对于Python来说,其接收到的JSON格式的字符串的内涵有多种形式,比如“字典”、“字典作为元素的列表”,尽管其表现出来总是以字符串的形式。

比如:

#JSON object的字符串形式
json_str = '{"name": "qiyue", "age": 18}'
#JSON array的字符串形式
json_str0 = '[{"name": "qiyue", "age": 18, "flag":false}, {"name": "bayue", "age": 19}]'

这里需要注意JSON格式中内部必须用双引号表示字符串。

一、JSON在Python中的反序列化

如果Python中接收到了JSON信息,其内部提供了json模块,可以通过json.loads()方法将这个信息字符串“反序列化”为Python语言中的对应格式变量。

 

import json
#JSON object的字符串形式
json_str = '{"name": "qiyue", "age": 18}'
student = json.loads(json_str)
print(type(student))
print(student)
#输出:
'''
<class 'dict'>
{'name': 'qiyue', 'age': 18}
'''
import json
#JSON array的字符串形式
json_str0 = '[{"name": "qiyue", "age": 18, "flag":false}, {"name": "bayue", "age": 19}]'
student0 = json.loads(json_str0)
print(type(student0))
print(student0)
print(student0[0]['name'])
print(student0[1]['age'])
#输出:
'''
<class 'list'>
[{'name': 'qiyue', 'age': 18, 'flag': False}, {'name': 'bayue', 'age': 19}]
qiyue
19
'''

二、Python至JSON格式的序列化

序列化即是把Python中的数据转换为JSON格式的数据,通过json模块中的dumps()方法。

import json

a0 = 10
a1 = 3.1415926
a2 = 'Hello'
a3 = [1,3,5,7,9]
a4 = ('x', 'y', 'z')
a5 = {1: 11, 2: 22, 3:33}

s0 = json.dumps(a0)
s1 = json.dumps(a1)
s2 = json.dumps(a2)
s3 = json.dumps(a3)
s4 = json.dumps(a4)
s5 = json.dumps(a5)

print(s0)
print(s1)
print(s2)
print(s3)
print(s4)
print(s5)

'''
输出:
10
3.1415926
"Hello"
[1, 3, 5, 7, 9]
["x", "y", "z"]
{"1": 11, "2": 22, "3": 33}
'''
import json

student = [
           {'name': 'qiyue', 'age': 18, 'flag': False},
           {'name': 'bayue', 'age': 19}
           ]

json_str = json.dumps(student)
print(type(json_str))
print(json_str)
'''
输出:
<class 'str'>
[{"name": "qiyue", "age": 18, "flag": false}, {"name": "bayue", "age": 19}]
'''

三、JSON、JSON对象与JSON字符串

JSON只是一种用于数据传输、交换的数据标准格式,是对ECMASCRIPT标准的某一方面的实现。

JSON对象只成立于JavaScript语言中,对于其他语言如Python来说并不存在JSON对象这种说法,因为对Python而言,只有JSON字符串与之交互(序列化及反序列化)。)

 

posted @ 2018-05-19 22:51  tsembrace  阅读(216)  评论(0编辑  收藏  举报