[python]json

本文介绍了 Python 中 JSON 模块的基本用法,包括如何使用 dumps 和 loads 方法进行数据序列化与反序列化。文中通过具体示例展示了如何处理复杂数据类型,并提供了自定义编码器的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的用法如下:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值