在用Python扩展标准json.JSONEncoder方面,我需要一些帮助。
我的目标是:
temp = {
"a": "test/string",
"b": {
"b1": "one/more/string",
"b2": 666
},
"c": 123
}我需要重写str的(扩展)编码,以将/替换为\/。
标准json.dumps将返回:
{"a":"test/string","b":{"b1":"one/more/string","b2":666},"c":123}我要得到:
{"a":"test\\/string","b":{"b1":"one\\/more\\/string","b2":666},"c":123}别问我为什么要这么做..。我已经覆盖了default()方法,但是当我用子类调用json.dumps时,它会被忽略。
我的编码器类:
class RetardJSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, str):
return json.JSONEncoder.default(self, obj.replace("/", "\/"))
return json.JSONEncoder.default(self, obj)发布于 2018-10-19 12:55:55
使用json包的当前实现,不可能重新定义字符串的编码方式。您希望在将字符串放入要发送的对象之前,为客户端应用修补程序或对字符串进行编码。否则,您将得到自己的JSON库。
https://stackoverflow.com/questions/52890290
复制相似问题