发布时间:2019-09-24 08:27:17编辑:auto阅读(2429)
本文从以下几个方面进行讨论:
1. JSON的基本概念
2. python解析JSON
3. 参考
JSON 比 XML 更小、更快,更易解析。具体的JSON和XML的比较,可以参考博客:
JSON与XML的区别比较
JSON 语法是 JavaScript 对象表示法语法的子集。
JSON的数据保存在 名称/值 对中。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值,例如:
“Name” : “SunPro”
JSON的值的类型有:
看一个JSON和XML的示例:
表示中国部分省市数据如下
{
"name": "中国",
"province": [{
"name": "黑龙江",
"cities": {
"city": ["哈尔滨", "大庆"]
}
}, {
"name": "广东",
"cities": {
"city": ["广州", "深圳", "珠海"]
}
}, {
"name": "台湾",
"cities": {
"city": ["台北", "高雄"]
}
}, {
"name": "新疆",
"cities": {
"city": ["乌鲁木齐"]
}
}]
}
对应的XML文件
<?xml version="1.0" encoding="utf-8"?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<cities>
<city>哈尔滨</city>
<city>大庆</city>
</cities>
</province>
<province>
<name>广东</name>
<cities>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>台湾</name>
<cities>
<city>台北</city>
<city>高雄</city>
</cities>
</province>
<province>
<name>新疆</name>
<cities>
<city>乌鲁木齐</city>
</cities>
</province>
</country>
可以看到,JSON 简单的语法格式和清晰的层次结构明显要比 XML 容易阅读,并且在数据交换方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用得带宽。
python通过json库来解析JSON
使用 JSON 函数需要导入 json 库:import json。
| 函数 | 描述 |
|---|---|
| json.dumps() | 将 Python 对象编码成 JSON 字符串 |
| json.loads() | 将已编码的 JSON 字符串解码为 Python 对象 |
Decoding:
| JSON | Python |
|---|---|
| object | dict |
| array | list |
| string | str |
| number (int) | int |
| number (real) | float |
| true | True |
| false | False |
| null | None |
Encoding:
| Python | JSON |
|---|---|
| dict | object |
| list, tuple | array |
| str | string |
| int, float, int- & float-derived Enums | number |
| True | true |
| False | false |
| None | null |
看一下实例:
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
jsonstr = json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')) #格式化输出
print(jsonstr)
print(type(jsonstr))
jsonDe = json.loads(jsonstr)
print(jsonDe)
print(type(jsonDe))
json解析也可以使用python json模块封装的json.JSONDecoder 和 json.JSONEncoder 类
详见 https://docs.python.org/3.5/library/json.html
也可以使用第三方库:Demjson
Demjson 是 python 的第三方模块库,可用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能。
Github 地址:https://github.com/dmeranda/demjson
官方地址:http://deron.meranda.us/python/demjson/
上一篇: Python学习:Beautiful S
下一篇: 用python完成程序员的表白
51272
50713
41317
38129
32591
29499
28351
23215
23184
21507
1584°
2304°
1912°
1854°
2174°
1897°
2587°
4324°
4176°
2980°