gpt4 book ai didi

python - 为什么这个自定义 json 编码器不起作用?

转载 作者:太空狗 更新时间:2023-10-30 00:23:36 24 4
gpt4 key购买 nike

<分区>

这个问题中描述的问题是由我在尝试修复它的方法时犯的一个愚蠢的错误引起的,即不还原测试后所做的更改——但是网站不允许我这样做删除它。因此,我建议您通过忽略它来节省一些时间,最好花在其他地方。

在尝试 answer 时最初建议使用自定义 JSONEncoder 子类来解决打印问题,我发现 documentation 是什么建议在 Extending JSONEncoder: 部分中执行操作似乎不起作用。这是我的代码,它是在文档的该部分中的 ComplexEncoder 示例之后设计的。

import json

class NoIndent(object):
def __init__(self, value):
self.value = value

class MyEncoder(json.JSONEncoder):
def default(self, obj):
print 'MyEncoder.default() called'
if isinstance(obj, NoIndent):
return 'MyEncoder::NoIndent object' # hard code string for now
else:
return json.JSONEncoder.default(self, obj)

data_structure = {
'layer1': {
'layer2': {
'layer3_1': NoIndent([{"x":1,"y":7},{"x":0,"y":4},{"x":5,"y":3},{"x":6,"y":9}]),
'layer3_2': 'string'
}
}
}

print json.dumps(data_structure, default=MyEncoder)

这是结果的回溯:

Traceback (most recent call last):
File "C:\Files\PythonLib\Stack Overflow\json_parsing.py", line 26, in <module>
print json.dumps(data_structure, default=MyEncoder)
File "E:\Program Files\Python\lib\json\__init__.py", line 238, in dumps
**kw).encode(obj)
File "E:\Program Files\Python\lib\json\encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "E:\Program Files\Python\lib\json\encoder.py", line 264, in iterencode
return _iterencode(o, 0)
RuntimeError: maximum recursion depth exceeded

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com