でJSONを解析します。Pythonは、私は現在、PythonやFacebookのグラフAPIで働いている可能性の欠落フィールド
私はFacebookのグラフAPIから取得した情報を解析する必要がある、と私はこれを行うための最善の方法だろうかについて疑問に思いました。
確かに、
r = json.loads(request)
はJSONを解析し、辞書を生成します。私は、ネストされた辞書にアクセスする必要がある場合に
問題が来て、例えば
ob["data"][0]["reactions"]["data"][0]
は、そのキーが」勝ったので、私たちは、ポストは、もちろん何の反応を、持っていない場合、これは無残に失敗し、Facebookの投稿を解析していると仮定すると辞書にも存在する。私はこれらのようなことをやってしまった一時的な解決策として
if 'comments' not in dct and 'summary' not in dct and 'total_count' not in dct:
dct["comments"] = {"summary": {"total_count": -1}}
は、スキーマが壊れることはないので、「デフォルト値」を作成し、エラーを取得せずに、グラフ内の任意のノードを読むことができるようにします。
あなたはどう思いますか?どのようにこれをより良くすることができますか?
EDIT:あなたはアクセスのレベルごとに安全なアクセサを使用したい
class post(DynamicDocument):
def __init__(self, *dct, **tmp):
Document.__init__(self, **tmp)
if dct:
....
self.totalComentarios = dct["comments"]["summary"]["total_count"]
使用 'd.get(DESC、デフォルト値)'。おそらく、サンプルJSONを追加して、このソリューションのアプリケーションをより明確にすることができます。 – Alexander
'try'ブロックにラップし、KeyError/IndexErrorをキャッチしますか? –
私はこれのようなものを持っています: * POSTで編集してください* dct.get( "comments"、{} ")を持っていないと、すべてのレベルでこれを行う必要がありますこの場合、要約、および合計カウントのために、より深い場合がある –