2

いくつかのコードを .Net から python に移植しています。

ある時点で、任意に複雑な json をある形式から別の形式に変換する必要があります。

例えば:

{"Query": 
    {
        "Boolean": {
            "Operator": "And",
            "Parameters": [
                {"Equal": {"Name": "Bob"}},
                {"Boolean": ...}
            ]
        }
    }
}

に...

{"Query": 
    {
        "Left": {"Name":"Bob"},
        "Right": {...},
        "Operator": "And"
    }
}

Newtonsoft.Json.JsonConverterシリアライゼーション/デシリアライゼーション プロセスにフックするために、Json.Net の優れた機能を使用していました。JsonConverter同じオブジェクトからこれらの各フォーマットへ/から変換する2 つの があります。

Public Overrides Function CanConvert(objectType As Type) As Boolean
    Return GetType(QueryDefinition).IsAssignableFrom(objectType)
End Function

これは、手動で処理したいビットを選択し、特別に処理する必要のないすべてのプロパティ/値をストック コンバーターが処理できるようにすることを意味します。

Python に同等のメカニズム/フレームワークはありますか? または、すべてのプロパティを再帰的に手動で解析する必要がありますか?

4

1 に答える 1

4

デフォルトの JSONEncoder をサブクラス化できます。

から: http://docs.python.org/2/library/json.html

「カスタム JSONEncoder サブクラス (たとえば、default() メソッドをオーバーライドして追加の型をシリアル化するもの) を使用するには、cls kwarg で指定します。それ以外の場合は、JSONEncoder が使用されます。」

http://docs.python.org/2/library/json.html#json.JSONEncoder

使用例:プレーンな JavaScript コードを挿入するための Python 2.7 のカスタム JSON エンコーダー

于 2013-03-18T09:42:08.663 に答える