2016-09-11 46 views
0

で値を取得する -は、私はフォーマットの一つの大きなJSONファイルを持つ大規模なJSONファイルを解析し、パイソン

{ 
    "x": "", 
    "y": { 
     "a": { 
      "-3": { 
       "id": -2, 
       "rut": "abc", 

      }, 
      "-1": { 
       "id": -1, 
       "rut": "cdf", 

      } 
     } 
    } 
} 

今私はすべての状況にidの値を取得します。このため 私は次のコードを持っている - 私はPythonでJSONを使用して、あまりにも慣れていないんだので

import json 
from pprint import pprint 

with open('file.json') as data_file: 
data = json.load(data_file) 
data['y']['a'].value()['id'] 

を、私は私が間違ってやっていたかを把握できませんでした。値-3-1のいずれかの数値になる可能性があり、手前には分かっていないため、.value()を使用しました。残りの値は定数です。 PPRINT輸入PPRINT

with open('file.json') as data_file: 
    data = json.load(data_file) 
    pprint([item['id'] for item in data['y']['a'].values()]) 

から

+0

あなたはどのようなエラーを得ているの? – Jezor

+0

@Jezor認識されていないので、.value()でエラーが発生します。あらかじめ特定の属性名がわからないときに値を読み取る方法がわからない – Zzrot

答えて

2

輸入JSON は、それはあなたが探しているものですか?

+0

はい、まさに私が望んでいたものです。ありがとう! – Zzrot

1

あなたの問題/エラーは少し不明ですが、あなたの「id」フィールドを取得するために利用可能なすべての値を繰り返し処理したいと思っています。

for x in data['y']['a']: 
    try: 
     print(x['id']) 
    except IndexError: #In case 'id' isn't present in that subtree 
     pass 
0

値()を使用したことはありますか?しかし

、すべての「idを取得する:

sub_data = data['y']['a'] 
for i in sub_data: 
    print(sub_data['id']) 
関連する問題