简单的用法如下:
import json;
# encode
print json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]);
print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True);
print json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'));
print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4, separators=(',', ': '));
# decode
print json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]');
def as_complex(dct):
if '__complex__' in dct:
return complex(dct['real'], dct['imag'])
return dct;
print json.loads('{"__complex__": true, "real": 1, "imag": 2}', object_hook=as_complex);
# Extending JSONEncoder
class ComplexEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, complex):
return [obj.real, obj.imag];
return json.JSONEncoder.default(self, obj);
print json.dumps(2 + 1j, cls=ComplexEncoder);
下面详细来看。
dumps
dump用来得到对象的json格式,定义如下:
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)
其中:
- obj:要格式化的对象
- skipkeys:跳过非基础类型的key
- ensure_ascii:跳过非ASCII码
- check_circular:检查循环
- all_nan:错误的数字
- indent:缩进
- separators:分隔符
- encoding:编码方式
- sortkeys:对输出进行排序
loads
load用来从json格式的字符串得到python对象,定义如下:
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
下面来看与dumps不同的参数:
- object_hook:把一个json字符串编程字典之后,调用它来到object的转化
- parse_float、parse_int、parse_constant:转化相应类型所使用的方法
这些参数基本上都可以从上面的例子中看到。
-----------
END