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