2017-11-30 3 views
0

だから私はこのようになりますJSONを持っている:ネストされたJSON要素の上にループ

[ 
    { 
    "Domain": "apple.com", 
    "A": [ 
     "17.142.160.59", 
     "17.172.224.47", 
     "17.178.96.59" 
    ], 
    "NS": [ 
     "c.ns.apple.com.", 
     "b.ns.apple.com.", 
     "a.ns.apple.com.", 
     "f.ns.apple.com.", 
     "nserver5.apple.com.", 
     "nserver6.apple.com.", 
     "d.ns.apple.com.", 
     "e.ns.apple.com." 
    ] 
    } 
] 

私は手動すなわちのようなネストされた情報を検索することができますが。

print(data[0]["Domain"]) --- Returns: apple.com 
print(data[0]["A"][0]) --- Returns: 17.142.160.59 

どのようにすることができ、私はinformation, the nested NS`情報を入れ子になったなどのドメインを取得しましょう情報を通じてIループ?

for i in data["Domain"]: 
    print(data[i]["Domain"]) 
    for j in ... // could not figure out, either way first loop fails. 

を無駄に:

は、私がこれをやってみました。助けてくれてありがとう!

+0

私の[この回答](https://stackoverflow.com/a/14059645/355230)のようなものは、これを行うために適応することができます(私は思う)。 – martineau

+0

@martineau私はhttps://stackoverflow.com/questions/14547916/how-can-i-loop-over-entries-in-jsonと同様にそこにいましたが、まだ分かりませんでした。これはPythonでpythonとjsonの両方で初めて作業しています。 –

答えて

1

あなたdata値があることを行っている

def get_values(data, scope=None): 
    for entry in data: 
     for prop, value in entry.items(): 
      if scope is not None and prop != scope: 
       continue 
      if not isinstance(value, list): 
       yield value 
      else: 
       for elem in value: 
        yield elem 

そしてをリストには、forループを含むディクショナリを繰り返し処理できます。

for inner in data: 

それからちょうどあなたが欲しいのキーに関連付けられた値にアクセスするためにinner['Domain']またはinner['A']を使用することができます。 Aレコードを反復処理するには、inner['A']で別のループを使用します。

for inner in data: 
    print("Domain:", inner['Domain']) 
    for ip in inner['A']: 
     print(" IP:", ip) 
    for ns in inner['NS']: 
     print(" NS:", ns) 

あなたはもちろん、むしろそれを印刷するよりも、データを他の何かを行うことができます。ここでは

は、私が何をしたいんだと思うネストされたループのセットです。

1

あなたはこのような何か行うことができます:あなたがまたできる

for value in get_values(data): 
    print(value) 

:JSONから来る

for value in get_values(data, scope="NS"): 
    print(value) 
関連する問題