我正在更新一个使用旧版cjson来加速其json编码的旧项目。它还有一个名为JSONString的自定义类(它将字符串设置为'value'属性),用于与数据库通信。
它曾用于调用cjson.encode((包含JSONString的dict),(JSONSTRING的自定义编码功能))但较新版本的cjson已更改其参数只接受一个参数,而不暴露任何其他可以允许自定义编码过程的函数。在没有自定义编码器的情况下编码dict会抛出EncodeError(对象不是JSON可编码的)。
我现在的选择是找出如何在cjson中使用自定义编码器,修改cjson源(试图避免修补库),或者使其插入到dict中的JSONString类型转换为字符串之前操作,但我试图避免在代码中放置“修复”(分区和重用性以及所有这些)。以某种方式修改JSONString以便编码器获取它的字符串值而不是抛出异常也会起作用,但我不太了解python的怪癖来做到这一点。我可以理解为什么cjson可能不允许自定义编码器(速度原因),但如果没有办法,我可能只需要找到别的东西。
任何建议都将不胜感激。
答案 0 :(得分:0)
查看我未回复的帖子并记得我从未将此标记为已回答。 Yavar的帖子确实有所帮助;有一个增强版的cjson for python。它运作良好,但有时会发生一些有趣的名称冲突,所以请注意这一点。