我正在更新一个使用旧版本 cjson 来加速其 json 编码的旧项目。它还有一个名为 JSONString 的自定义类(将字符串设置为其“值”属性),用于与数据库进行通信。
它曾经调用 cjson.encode( (dict contains a JSONString) , (custom encoding funct for JSONSTRING) ) 但较新版本的 cjson 已将其参数更改为仅接受一个参数,并且不公开任何其他可能允许自定义的函数编码过程。在没有自定义编码器的情况下对 dict 进行编码会引发 EncodeError(对象不可 JSON 编码)。
我现在的选择是要么找出如何在 cjson 中使用自定义编码器,修改 cjson 源(试图避免修补库),要么在操作之前将插入 dict 的 JSONString 类型转换为字符串,但我试图避免在整个代码中放置“修复”(划分和可重用性等等)。以某种方式修改 JSONString 以便编码器获取它的字符串值而不是抛出异常也可以,但我对 python 的怪癖了解不多。我可以理解为什么 cjson 可能不允许自定义编码器(速度原因),但如果没有办法,我可能只需要找到其他东西。
任何建议将不胜感激。