2

JSON応答を逆シリアル化する際にザルを使用しています。数値のみを含むように構成されたフィールドがありますが、このフィールドの応答に null または数値以外の値が含まれている場合があり、アプリケーションが無効なエラーをスローします。私のプログラムでそれを処理して、NAなどのデフォルト値をフィールドに与える方法はありますか? 状況を説明する例を次に示します。

これはサンプルです:

class SampleClass(colander.MappingSchema):
    name = colander.SchemaNode(colander.String())
    testMark  = colander.SchemaNode(colander.Float(), missing=None)


class Sample(colander.MappingSchema):
    type = colander.SchemaNode(colander.String())
    student = colander.SampleStudent()

I want the following JSON to be accepted and not throw error for testMark as null

{  
   "type":"test",
   "student":{  
      "name":"a name",
      "testMark":null
   }
}

コードに何か問題がある場合は申し訳ありませんが、Python は初めてです。シナリオを明確にしたことを願っています。テストマークが数字でないときはいつでも、testMarkフィールドにデフォルト値、たとえばNAを与えたいと思います。

PS これは単なるサンプル シナリオです。実際のシナリオをここに投稿することはできません。

4

1 に答える 1

0

任意の値を受け入れる独自の SchemaType を記述できますが、float または null に逆シリアル化します。

http://docs.pylonsproject.org/projects/colander/en/latest/extending.html

class MyFloat(colander.Float):

    def deserialize(self, node, cstruct):
        if isinstance(cstruct, float):
            return cstruct
        else:
            return null

私はこれをテストしませんでしたが、理解していただければ幸いです。

于 2015-01-14T21:39:51.300 に答える