JSON是一种轻量级的数据交换格式,易于读写,也易于机器的解析。
使用Python处理JSON:
Python自己有json模块,用于将Python对象和json字符串进行相互的转换。
编码:
使用json.dumps()
将Python队形编码转换成json字符串
>>> import json
>>> python_obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)},True,False,None]
>>> json_str=json.dumps(python_obj)
>>> print json_str
[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}, true, false, null]
可以看到在编码的过程中,Python原始类型会转化成json类型,转化表如下
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
这个编码方法还提供了很多参数:
>> python_obj2={"key2": [4, 5, 6], "key1": [1, 2, 3]}
>>> json_str2=json.dumps(python_obj2)
>>> json_str2=json.dumps(python_obj2,sort_keys=True,indent=2)
>>> print json_str2
{
"key1": [
1,
2,
3
],
"key2": [
4,
5,
6
]
}
这里sort_keys
是用来对dict对象进行排序的,indent
是用来格式化输出的。
解码:
使用json.loads()
将JSON格式字符串解码,转换成Python对象。
这里将上面的编码例子再进行解码:
>>> print json.loads(json_str)
[[1, 2, 3], 123, 123.123, u'abc', {u'key2': [4, 5, 6], u'key1': [1, 2, 3]}, True, False, None]
这里会发现string类型的JSON数据转换成了Unicode类型。
使用参数让JSON数据格式化输出:
>>> import json
>>> print json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
{
"a": "Runoob",
"b": 7
}