JSON

JSON是指JavaScript对象表示法(JavaScript Object Notation)

- 独立于语言和平台
- 和XML类似,存储和交换文本信息
- 比XML语言更快、更易解析
语法规则如下:
(1)使用键值对(key:value)表示对象属性
(2)使用(,)分隔多条数据
(3)使用花括号{}包含对象
(4)使用方括号[]表示数组

基本结构

1、JSON键/值对

  • 格式:字段名称(包含在双引号内)后面一个冒号然后是值
  • 例如:“name”:“xiaohong”
    2、 JSON的值
    数字、字符串、逻辑值、数组、对象、null
    3、JSON对象{}
  • 格式:{key:value,key:value,....}的键值对结构,取值方法“对象.key“获取属性,这个属性可以是数字、字符串、数组、对象。
    4、JSON数组[]
  • 格式:[字段1,字段2,字段3,.....],其中字段值对类型可以是数字、字符串、数组、对象、使用索引获取值

下面写一个示例:

{
    "name":"中国",
    "province":[{
    "name":"湖北",
    "cities":{
        "city":["武汉","襄阳"]
    }},{
    "name":"辽宁",
    "cities":{
        "city":["沈阳","大连","鞍山"]
    }
    }]
}
从python2.6开始加入了json模块,使用import json导入就可以使用,Json模块提供了Python对象的序列化和反序列化功能:
(1)序列化(encoding):将一个Python对象编码转换成JSON字符串的过程
(2)反序列化(decoding):将JSON字符串解码转换成Python对象的过程

基本应用

json模块提供了4个方法:dumps()、dump()、loads()、load(),用于字符串和Python数据类型间进行转换。其中loads()和load()方法用于Python对象的反序列化,dumps()和dump()用于Python对象的序列化

json.loads()

把JSON格式字符串解码成Python对象。从JSON类型向Python原始类型转换的对照如下:
JSONPython
objectdict
arraylist
stringunicoce
number(int)int.long
number(real)float
trueTrue
falseFalse
nullnull

json.dumps()

实现将Python类型编码为JSOn字符串,返回一个str对象,从Python类型转换的对照如下表

PythonJSON
str,unicodestring
int,long,floatnumber
Truetrue
Falsefalse
Nonenull

json.load()

读取文件中JSON形式的字符串元素,转换为Python类型,它与json.loads()方法不同点在于一个读取的是字符串一个读取的是文件。
以下示例读取一个名为listStr.json和dictStr.json的文件内容,代码如下:

import json
str_list=json.load(open("listStr.json"))
print(str_list)
str_dict=json.load(open("dictStr.json"))
print(str_dict)

json.dump()

将Python内置类型序列化json对象后写入文件,它和json.dumps()的区别也是处理文件/字符串

import json
str_list=[{"city":"北京"},{"name":"小明"}]
json.dump(str_list,open("listStr.json","w"),ensure_ascii=False)
最后修改:2021 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏