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)#输出:'''{'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'])#输出:'''[{'name': 'qiyue', 'age': 18, 'flag': False}, {'name': 'bayue', 'age': 19}]qiyue19'''
二、Python至JSON格式的序列化
序列化即是把Python中的数据转换为JSON格式的数据,通过json模块中的dumps()方法。
import jsona0 = 10a1 = 3.1415926a2 = '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)'''输出:103.1415926"Hello"[1, 3, 5, 7, 9]["x", "y", "z"]{"1": 11, "2": 22, "3": 33}'''
import jsonstudent = [ { 'name': 'qiyue', 'age': 18, 'flag': False}, { 'name': 'bayue', 'age': 19} ]json_str = json.dumps(student)print(type(json_str))print(json_str)'''输出:[{"name": "qiyue", "age": 18, "flag": false}, {"name": "bayue", "age": 19}]'''
三、JSON、JSON对象与JSON字符串
JSON只是一种用于数据传输、交换的数据标准格式,是对ECMASCRIPT标准的某一方面的实现。
JSON对象只成立于JavaScript语言中,对于其他语言如Python来说并不存在JSON对象这种说法,因为对Python而言,只有JSON字符串与之交互(序列化及反序列化)。)