0

ISOWeekPython2.7の組み込みjsonモジュールを使用してカスタムpythonクラスのインスタンスをエンコードしようとしています。JS文字列(など"2012-08")ではなく、コンストラクター呼び出しにエンコードする必要がありますnew ISOWeek({year: 2012, kw: 8})。Pythonのjsonドキュメントには、メソッドをサブラスJSONEncoderしてオーバーライドする必要があると書かれていますdefaultが、実際のシリアル化ではなく、別のJSONシリアル化可能なオブジェクトのみを返すことができます。ソースを見るとjson.py、モジュールをハックする明白な方法がわかりません。助言がありますか?

4

2 に答える 2

2

コンストラクター呼び出しをJSONに直接配置する(JSONが無効になる)代わりに、データをフォーマットして何が起こっているのかがわかるようにし、JSを変更して正しい変換を行うことをお勧めします(たとえば、次の代わりに) :

{"date": new ISOWeek({year: 2012, kw: 8})}

私はこのようなものを提案します:

{"date": ["ISOWeek", {"year": 2012, "kw": 8}]}
于 2012-08-27T17:37:44.100 に答える
1

それは有効なJSONではないと思います。http://www.json.org/を参照してください。JavaScriptでそれを行うことができますが、JSONでは、基本的なタイプ(文字列、数値、ブール値、null、およびそれらのタイプのリスト/辞書)に制限されます。

コンストラクターの文字列バージョン、または関連情報を含む他のオブジェクトにシリアル化できます。ただし、何らかの方法で、受信側で処理を実行して、ISOWeekオブジェクトにデコードする必要があります。

于 2012-08-27T17:36:59.157 に答える