我有以下代碼:json.dumps()適用於Python 2.7版,但不是在蟒蛇3
import json
src_vol1 = {'provider_id':'src1'}
src_vol2 = {'provider_id':'src2'}
get_snapshot_params = lambda src_volume, trg_volume: {
'volumeId': src_volume['provider_id'],
'snapshotName': trg_volume['id']}
trg_vol1 = {'id':'trg1'}
trg_vol2 = {'id':'trg2'}
src_vols = [src_vol1, src_vol2]
trg_vols = [trg_vol1, trg_vol2]
snapshotDefs = map(get_snapshot_params , src_vols, trg_vols)
params = {'snapshotDefs': snapshotDefs}
json.dumps(params)
我需要兩個Python3和Python2.7工作,但Python3我得到
Traceback (most recent call last):
File "./prog.py", line 16, in <module>
File "/usr/lib/python3.4/json/__init__.py", line 230, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python3.4/json/encoder.py", line 192, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python3.4/json/encoder.py", line 250, in iterencode
return _iterencode(o, 0)
File "/usr/lib/python3.4/json/encoder.py", line 173, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <map object at 0xb72a1a0c> is not JSON serializable
我試圖把dict()放在PARAMS中,但它沒有工作。 有什麼區別?我沒有在文檔中找到任何內容。
謝謝,它仍然可以在Python2上工作嗎? – slashms
是的,儘管額外的list()將是無用的。 – LeartS
@matansab,是的。查看我的更新。 – shx2