1

JSON デコード エラーと KeyErrors について JSON ペイロードをチェックするメソッドがあります。何らかの理由で、exceptを含むステートメントが呼び出されますが、オブジェクトが であるためKeyError、実際には no があったことが示されます。コードは次のとおりです。KeyErrorNone

    try:
        test_data = simplejson.loads(self.raw_data) # Loads the data in a dict to test for the right fields
        test_data["test"]

    except simplejson.decoder.JSONDecodeError as jsonErr:
        print 'JSON Malform Error: ', jsonErr
        pass
        return False

    except KeyError as keyErr:
        print 'JSON Validation Error: ', keyErr
        pass
4

2 に答える 2

1

KeyError はおそらく によって発生しsimplejson.loads、問題のキーは実際には である可能性がありますNone。詳細を説明するにはコンテキストが不十分です。求められたとおりにトレースバックを提供すると、非常に役立ちます。

于 2010-12-21T01:04:27.940 に答える
0

トレースバックを調べると、どのモジュールで例外が発生したかがわかります。このような将来の問題をデバッグするために、ipdbを使用して手動で前後に移動することを検討することもできます。さらに、Python の Exception クラスから継承する必要があるため、例外を発生させて独自のコードをより細かく制御できます。

Python の getattr および setattr 関数を利用することも大いに役立ちます。

test_dataで getattr を使用すると、 None が返された場合にいつカスタム例外を発生させるかがわかります。

于 2010-12-21T01:25:03.107 に答える