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)