gpt4 book ai didi

python - 自定义 JSONEncoder 返回格式错误的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:43 26 4
gpt4 key购买 nike

我正在实现我自己的 JSONEncoder 来完全按照我的需要处理不同的类。不幸的是,我的自定义编码器返回格式有点错误的字符串。它们被引号包围,某些字符(引号)被转义。

请使用以下代码重现该行为:

import json

class CustomEncoder(json.JSONEncoder):
def default(self, givenObject):
#for testing purposes this always returns the same string
str = '{"id":0,"name":"Peter"}'
return str;

class AnyClass(object):
pass

encoder = CustomEncoder()
dummyClass = AnyClass()

#expected output: {"id":0,"name":"Peter"}
print encoder.encode(dummyClass)

#output: "{\"id\":0,\"name\":\"Peter\"}"

我正在使用 Python 2.7。

如何防止这种行为?我做错了什么?

最佳答案

default 应该返回一个对象,而不是一个 json block :

import json

class CustomEncoder(json.JSONEncoder):
def default(self, givenObject):
obj = {"id":0,"name":"Peter"}
return obj

class AnyClass(object):
pass

encoder = CustomEncoder()
dummyClass = AnyClass()

print encoder.encode(dummyClass) # {"id": 0, "name": "Peter"}

http://docs.python.org/library/json.html#json.JSONEncoder.default :

Implement this method in a subclass such that it returns a serializable object for o, or calls the base implementation (to raise a TypeError).

关于python - 自定义 JSONEncoder 返回格式错误的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13434269/

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