json模块

JSON就是JavaScript Object Notation,这个模块完成了python对象和JSON字符串的互相转换! json是一种很多语言支持的通用语言



作用:如下,作为一个桥梁 在api接口中数据调用传输中常用

php数据类型 <----> json格式  <--->  python

java数据类型 <----> json格式  <----> python

Mysql Text类型 <----> json格式  <----> python


json和python 字符类型的对比

     |  +-------------------+---------------+
     |  | Python            | JSON          |
     |  +===================+===============+
     |  | dict              | object        |
     |  +-------------------+---------------+
     |  | list, tuple       | array         |
     |  +-------------------+---------------+
     |  | str, unicode      | string        |
     |  +-------------------+---------------+
     |  | int, long, float  | number        |
     |  +-------------------+---------------+
     |  | True              | true          |
     |  +-------------------+---------------+
     |  | False             | false         |
     |  +-------------------+---------------+
     |  | None              | null          |
     |  +-------------------+---------------+



用途场景1:

wKioL1cbTYvDLs6SAABORLwq_r8432.png



一 、dumps函数

案例一: (案例只为演示效果)

cuizhiliangdeMacBook-Air:test cuizhiliang$ cat 1.py 

#!/usr/bin/env python
#encoding=utf8
import json
d = {'name':"张三", 'age':24, '有病': False }
print json.dumps(d)


结果:

cuizhiliangdeMacBook-Air:test cuizhiliang$ python  1.py 
{"age": 24, "\u6709\u75c5": false, "name": "\u5f20\u4e09"}



案例二: 参数的效果:

#!/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)


结果:

{
    "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 

#!/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 

#!/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

#!/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 

<type 'dict'>
{u'age': 24, u'\u6709\u75c5': False, u'name': u'\u5f20\u4e09'}