python如何处理JSON格式数据 -------------------------------------------- JavaScript对象表示法(JSON)是一种轻量级的、基于文本的、语言独立的数据交换格式。这是来自 ECMAScript编程语言标准。JSON定义了一组格式化规则来表示结构化数据,这样就增加了可移植。 JSON格式有四种简单类型, 分别为: * 字符串是由0个或多个Unicode字符组成的序列,用双引号括起来,使用反斜线"\"转义。字符用单个字符的字符串来表示。字符串非常类似于C或Java字符串。 * 数字非常类似于C或Java整型数字,但不使用八进制和十六进制格式。 * 布尔类型,分别为true, false, 必须为小写字符。 * null。 JSON有两种复合类型,复合类型可以嵌套。 * “名称/值”对集合对象。由顺序无关的“名称/值”对组成,以左花括号开始,以右花括号结束。“名称/值” 对之间由逗号分割,每一个名称后面跟着冒号。 * 有序的列表值,在大多数语言中,是一个数组、向量、链表或序列等。JSON中以数组形式来顺序存储。 数组以左中括号开始,以右中括号结束,数据值以逗号分隔。 以下为两种典型JSON格式文本 :: { "action": "ifdown", "interface": "wan" } {"dns_server": ["58.30.131.33 ", "211.99.143.33"] } 还有简单格式的JSON文本 :: "Hello world!" 42 true 对于复合类型,通常json库是兼容的,但对于简单类型的JSON格式,某些json库不能处理,但python可以处理。 :: import json config1 = json.loads('"hello"') config2 = json.loads('10') config3 = json.loads('true') config4 = json.loads('false') config5 = json.loads('null') print(config1, config2, config3) print(config4, config5) 需要注意,对于字符串需要加引号,对于布尔值是区分大小写的。 python的json库主要有四个函数来对json数据进行处理,分别为load,loads,dump,dumps函数。 * json.dump 以json格式序列化对象到文件对象中。 * json.dumps 以json格式序列号对象到字符串中。 * json.load 反序列化一个对象,即从文件中读取字符串,然后转换为python对象。 * json.loads 从字符串中反序列化一个对象,即将json格式的字符串转换为python对象。 python对象和json字符串之间的转换规则如下: ========== ======================================== JSON Python ========== ======================================== 集合对象 字典(dict) 数组 列表(list) 字符串 字符串(str) 数字(int) 整形数字(int) 数字(real) 浮点型数字(float) true True false False null None ========== ======================================== 我们举一个实际的例子, 下面代码演示了调用loads函数从字符串中转换为python对象, 同时也演示了调用dumps函数从python对象转换为json格式的字符串。注释为实际的输出:: import json config1 = json.loads('{ "action": "ifdown", "interface": "wan" }') print(type(config1)) # print(config1) #{'action': 'ifdown', 'interface': 'wan'} s1 = json.dumps(config1) print(type(s1)) # print(s1) #{"action": "ifdown", "interface": "wan"}