json模块
JSON就是JavaScript Object Notation,这个模块完成了python对象和JSON字符串的互相转换! json是一种很多语言支持的通用语言
作用:如下,作为一个桥梁 在api接口中数据调用传输中常用
php数据类型 <----> json格式 <---> python
java数据类型 <----> json格式 <----> python
Mysql Text类型 <----> json格式 <----> python
json和python 字符类型的对比
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
| +
-------------------+---------------+
| | Python | JSON |
| +===================+===============+
| | dict | object |
| +
-------------------+---------------+
| | list, tuple | array |
| +
-------------------+---------------+
| | str, unicode | string |
| +
-------------------+---------------+
| |
int
, long,
float
| number |
| +
-------------------+---------------+
| |
True
|
true
|
| +
-------------------+---------------+
| |
False
|
false
|
| +
-------------------+---------------+
| | None |
null
|
| +
-------------------+---------------+
|
用途场景1:
一 、dumps函数
案例一: (案例只为演示效果)
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat 1.py
|
1
2
3
4
5
|
#!/usr/bin/env python
#encoding=utf8
import
json
d
=
{
'name'
:
"张三"
,
'age'
:
24
,
'有病'
:
False
}
print
json.dumps(d)
|
结果:
|
1
2
|
cuizhiliangdeMacBook
-
Air:test cuizhiliang$ python
1.py
{
"age"
:
24
,
"\u6709\u75c5"
: false,
"name"
:
"\u5f20\u4e09"
}
|
案例二: 参数的效果:
|
1
2
3
4
5
|
#!/usr/bin/env python
#encoding=utf8
import
json
d
=
{
'name'
:
"张三"
,
'age'
:
24
,
'有病'
:
False
}
print
json.dumps(d, ensure_ascii
=
False
, indent
=
4
, sort_keys
=
True
)
|
结果:
|
1
2
3
4
5
|
{
"age"
:
24
,
"有病"
: false,
"name"
:
"张三"
}
|
常用参数:
ensure_ascii 默认是True,字符编码格式
sort_keys 是否对齐
indent=4 缩进问题
二、dump 和load函数,常用在文件流读中的用途场景1 用途,就像pickle这个模块的功能一样
json dump函数 将数据已sjon格式写入文件流中
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat test_json_dump.py
|
1
2
3
4
5
6
|
#!/usr/bin/env python
#encoding=utf8
import
json
f
=
file
(
'file.json'
,
'w'
)
d
=
{
'name'
:
"张三"
,
'age'
:
24
,
'有病'
:
False
}
json.dump(d, f, ensure_ascii
=
False
, indent
=
4
, sort_keys
=
True
)
|
cuizhiliangdeMacBook-Air:test cuizhiliang$ python test_json_dump.py
存入文本结果:
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat file.json
{
"age": 24,
"name": "张三",
"有病": false
}
区别json dumps 实现,dumps当然不是处理文件流的咯,要通过文件的write功能写入文件中
等价于:
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat test_json_dumps.py
|
1
2
3
4
5
6
|
#!/usr/bin/env python
#encoding=utf8
import
json
f
=
file
(
'file.json'
,
'w'
)
d
=
{
'name'
:
"张三"
,
'age'
:
24
,
'有病'
:
False
}
f.write(json.dumps(d, ensure_ascii
=
False
, indent
=
4
, sort_keys
=
True
))
|
json load 从文件流中读取json数据
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat test_json_load.py
|
1
2
3
4
5
6
7
|
#!/usr/bin/env python
# encoding: utf-8
import
json
f
=
open
(
'file.json'
,
'r'
)
d
=
json.load(f)
print
type
(d)
print
d
|
cuizhiliangdeMacBook-Air:test cuizhiliang$
cuizhiliangdeMacBook-Air:test cuizhiliang$ python test_json_load.py
|
1
2
|
<
type
'dict'
>
{u
'age'
:
24
, u
'\u6709\u75c5'
:
False
, u
'name'
: u
'\u5f20\u4e09'
}
|
