JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
Python的json模块提供了一种很简单的方式来编码和解码JSON数据。
使用 JSON 函数需要导入 json 库:import json。
其中两个主要的函数是:
json.dumps() :将 Python 对象编码成 JSON 字符串
json.loads() :将已编码的 JSON 字符串解码为 Python 对象
语法:
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
具体来看下例子:
import json
data = {
'name' : 'python',
'age' : 20,
'isman' : True,
'info' : None
}
json_str = json.dumps(data)
print json_str
这里的None转成了JSON的null,True转成了JSON的true,其他的还有
Python | JSON |
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
其他参数的一些用法:
import json
print json.dumps({"c": 0, "b": 0, "a": 0})
print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
print json.dumps([1,2,3,{'4': 5, '6': 7}])
print json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
print json.dumps({'4': 5, '6': 7})
print json.dumps({'4': 5, '6': 7}, sort_keys=True,indent=4, separators=(',', ': ')) #indent参数是缩进
结果:
{"a": 0, "c": 0, "b": 0}
{"a": 0, "b": 0, "c": 0}
[1, 2, 3, {"4": 5, "6": 7}]
[1,2,3,{"4":5,"6":7}]
{"4": 5, "6": 7}
{
"4": 5,
"6": 7
}
loads方法:
import json
data =json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
print data
from StringIO import StringIO
io = StringIO('["streaming API"]')
print json.load(io)
在Python标准库的json包中,提供了JSONEncoder和JSONDecoder两个类来实现Json字符串和dict类型数据的互相转换。
import json
dic={}
dic['a'] =1
dic['b']=2
dic[3]='c'
dic[4]=['k','k1']
#将Python dict类型转换成标准Json字符串
k=json.JSONEncoder().encode(dic)
print(type(k))
print(k)
#将json字符串转换成Python dict类型
json_str='{"a":1,"b":2,"3":"c","4":["k","k1"]}'
dic=json.JSONDecoder().decode(json_str)
print(type(dic))
print(dic)