2017-09-20 6 views
0

//私の貧しい英語を許してください。(Python)複雑なjsonデータを処理する方法

こんにちは皆、私はFacebookのコメントスパイダーに関するプロジェクトをやっています。 Facebook Graph GUIが見つかりました。それは私のためにとても複雑なjsonファイルを返します。 jsonファイルには非常に多くの部分が含まれています

次に、json.loadsを使用してすべてのjsonコード を取得します。 と私は値にアクセスする方法を知らない

たとえば、私はすべてのIDまたはコメントを取得したいと思います。 しかし、私はdict "データ"と "パディング"の2つのキーを得ることができる そう、次のキーを取得するにはどうすればいいですか? 「id」や「コメント」 のような複雑なデータを処理する方法について説明します。

code

ありがとうございました。

+1

FacebookのグラフAPIの戻りデータ(https://imgur.com/a/xN6sp) –

答えて

0

あなたが探しているものを知っていて、それを直接アクセスしたり、キーをループしたり、キーの値を調べたり、ツリーの終わりに達するまで別のループを入れ子にしたり。

これは、自己呼び出し関数とjQueryの適切な使い方を使用して行うことができます。

function get_the_stuff(url) 
{ 
    $.getJSON(url, function (data) { 
    my_parser(data) }); 
} 

function my_parser(node) 
{ 
    $.each(node, function(key, val) { 
    if (val && typeof val == "object") { my_parser(val); } 
    else { console.log("key="+key+", val="+val); } 
    }); 
} 

私はすべてのエラーチェックを省略:ここ

は一例です。また、チェックのタイプが適切であることを確認してください。数字、文字列、ヌルまたはブール値をさまざまな方法で扱うために、他のいくつかのelseifが必要な場合があります。これは単なる例です。

EDIT:トピックが「Python」と言っていたのを少し間違っているかもしれません...ごめんなさい。 Pythonに自由に翻訳してください。同じ原則が適用されます。

EDIT2:今度はPythonで試してみましょう。 JSONが既に変数にインポートされていると仮定しています。

def my_parser(node, depth=0): 
    if type(node) == "list": 
     for val in node: 
      my_parser(val,depth+1) 
    elif type(node) == "dict": 
     for key in node: 
      printf("level=%i key=%s" % (depth, key)) 
      my_parser(node[key], depth+1) 
    elif type(node) == "str": 
      pritnf("level=%i value=%s" % (depth, node)) 
    elsif type(node) == "int": 
      printf("level=%i value=%i % (depth, node)) 
    else: 
      printf("level=%i value_unknown_type" % (depth)) 
+0

は、残念ながら、私はとても残念だ、jQueryのを理解しない、答えてくれてありがとう。 –

関連する問題