2016-05-13 12 views
1

この入れ子になったjsonペイロードから値Aのみを取得しようとしています。入れ子になったjsonペイロードのpythonを解析する

My機能:

import requests 
import json 
def payloaded(): 
from urllib.request import urlopen 
with urlopen("www.example.com/payload.json") as r: 
    data = json.loads(r.read().decode(r.headers.get_content_charset("utf-8"))) 
text = (data["bod"]["id"]) 
print(text) 

ペイロード:

bod: { 
id: [ 
    { 
     value: "A", 
     summary: "B", 
     format: "C" 
    } 
    ] 
}, 

現在のところ、それはカッコ内のすべての[...値...概要...フォーマットを返しています。 ..]

解決策:

def payloaded(): 
from urllib.request import urlopen 
with urlopen("www.example.com/payload.json") as r: 
    data = json.loads(r.read().decode(r.headers.get_content_charset("utf-8"))) 
text = (data["bod"]["id"][0]["value"]) 
print(text) 

答えて

1

id値がリストであるので、(それだけで単一の値が含まれていても)、あなたはリストのインデクサとその中に移動する必要があります。 Pythonでリストが(彼らはゼロからのスタート)ゼロインデックス付きなので、あなたは最初の要素を抽出するために[0]を使用します:

data["bod"]["id"][0]["value"] 
+0

感謝を!私はあなたが提案したのと同じ解決策に来た。 – avorter

0

これは動作します:

def payloaded(): 
from urllib.request import urlopen 
with urlopen("www.example.com/payload.json") as r: 
    data = json.loads(r.read().decode(r.headers.get_content_charset("utf-8"))) 
text = (data["bod"]["id"][0]["value"]) 
print(text) 
関連する問題