古いバージョンの cjson を使用して json エンコーディングを高速化した古いプロジェクトを更新しています。また、データベースとの通信に使用される JSONString (文字列を「値」プロパティに設定する) というカスタム クラスもあります。
以前は cjson.encode( (JSONString を含む dict) , (JSONSTRING のカスタム エンコーディング関数) ) を呼び出していましたが、新しいバージョンの cjson では、パラメーターが 1 つの引数のみを受け入れるように変更され、カスタマイズを可能にする他の関数は公開されていません。エンコーディングプロセス。カスタム エンコーダーを使用せずに dict をエンコードすると、EncodeError がスローされます (オブジェクトは JSON エンコード可能ではありません)。
私が今持っているオプションは、cjson でカスタム エンコーダーを使用する方法を見つけるか、cjson ソースを変更する (ライブラリにパッチを当てないようにする) か、dict に挿入された JSONString 型が操作の前に文字列に変換されるようにすることです。しかし、コード全体に「修正」を配置することは避けようとしています (区画化と再利用性など)。JSONString を何らかの方法で変更して、エンコーダーが例外をスローする代わりにその文字列値を取得するようにすることもできますが、これを行うための Python の癖について十分に知りません。cjson がカスタム エンコーダーを許可しない理由 (速度の理由) は理解できますが、方法がない場合は、何か他のものを見つける必要があるかもしれません。
どんな提案でも大歓迎です。