2016-05-13 24 views
1

Ich versuche, nur Wert A aus dieser verschachtelten Json Payload zu bekommen.Parsing verschachtelte Json Payload Python

Meine Funktion:

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) 

Die Nutzlast:

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

Derzeit ist es alles in den Klammern der Rückkehr [... Wert ... Zusammenfassung ... Format. ..]

Gefundene Lösung:

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) 

Antwort

1

Da der id Wert ist eine Liste (auch wenn es nur einen einzigen Wert enthält), müssen Sie im Inneren mit einer Liste Indexer gehen. Da Listen in Python sind Null-indizierte (sie von Null beginnen) werden Sie [0] verwenden das erste Element zu extrahieren:

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

Dank! Ich kam zu der gleichen Lösung, die Sie vorgeschlagen haben. – avorter

0

Dies funktioniert:

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)