Ich versuche, ein Antwortobjekt zu behandeln, das von BitBuckets API in Python zurückgegeben wird. Ich habe den folgenden Code, um zu versuchen und zu handhaben die Antwort:Behandeln eines mehrdimensionalen Antwortobjekts aus der REST-API im Python-Wörterbuch
import requests
import json
url = 'http:www.sampleurl.com'
myResponse = requests.get(url,auth=("myusername","mypassword"))
jd = myResponse.json()
print(jd.keys())
Und die Schlüssel kommen vollkommen zurück. Innerhalb eines bestimmten Schlüssels wird jedoch eine Liste zurückgegeben. Ich bin an den Werten interessiert, die in dieser Liste enthalten sind. Konkret geht es mir um die Werte innerhalb von "Werten". Gibt es eine Möglichkeit, die in den Werten enthaltenen Informationen zu analysieren, bevor/nachdem eine Liste erstellt wird?
Mein Problem läuft auf die Tatsache hinaus, dass ich Probleme mit dem Zugriff auf Informationen innerhalb der JSON Array 'Eltern' innerhalb der folgenden Beispielantwort habe.
{
"pagelen": 30,
"values": [
{
hash: "61d9e64348f9da407e62f64726337fd3bb24b466",
links: {
self: {
href: "https://api.bitbucket.org/2.0/repositories/atlassian/atlassian-rest/commit/61d9e64348f9da407e62f64726337fd3bb24b466"
},
comments: {
href: "https://api.bitbucket.org/2.0/repositories/atlassian/atlassian-rest/commit/61d9e64348f9da407e62f64726337fd3bb24b466/comments"
},
patch: {
href: "https://api.bitbucket.org/2.0/repositories/atlassian/atlassian-rest/patch/61d9e64348f9da407e62f64726337fd3bb24b466"
},
html: {
href: "https://api.bitbucket.org/atlassian/atlassian-rest/commits/61d9e64348f9da407e62f64726337fd3bb24b466"
},
diff: {
href: "https://api.bitbucket.org/2.0/repositories/atlassian/atlassian-rest/diff/61d9e64348f9da407e62f64726337fd3bb24b466"
},
approve: {
href: "https://api.bitbucket.org/2.0/repositories/atlassian/atlassian-rest/commit/61d9e64348f9da407e62f64726337fd3bb24b466/approve"
}
},
repository: {
links: {
self: {
href: "https://api.bitbucket.org/2.0/repositories/atlassian/atlassian-rest"
},
avatar: {
href: "https://d3oaxc4q5k2d6q.cloudfront.net/m/bf1e763db20f/img/language-avatars/java_16.png"
}
},
full_name: "atlassian/atlassian-rest",
name: "atlassian-rest"
},
author: {
raw: "Joseph Walton <[email protected]>",
user: {
username: "jwalton",
display_name: "Joseph Walton",
links: {
self: {
href: "https://api.bitbucket.org/2.0/users/jwalton"
},
avatar: {
href: "https://secure.gravatar.com/avatar/8e6e91101e3ed8a332dbebfdf59a3cef?d=https%3A%2F%2Fd3oaxc4q5k2d6q.cloudfront.net%2Fm%2Fbf1e763db20f%2Fimg%2Fdefault_avatar%2F32%2Fuser_blue.png&s=32"
}
}
}
},
parents: [{
hash: "59721f593b020123a75424285845325126f56e2e",
links: {
self: {
href: "https://api.bitbucket.org/2.0/repositories/atlassian/atlassian-rest/commit/59721f593b020123a75424285845325126f56e2e"
}
}
}, {
hash: "56c49d8b2ae3a094fa7ba5a1251d6dd2c7c66993",
links: {
self: {
href: "https://api.bitbucket.org/2.0/repositories/atlassian/atlassian-rest/commit/56c49d8b2ae3a094fa7ba5a1251d6dd2c7c66993"
}
}
}],
date: "2013-10-21T07:21:51+00:00",
message: "Merge remote-tracking branch 'origin/rest-2.8.x' "
}
],
"page": 1
}
Möchten Sie nur die Antwortdaten auf nur die Schlüssel reduzieren, die Sie interessieren? Habe ich die Frage falsch verstanden? –
Das ist ein Nebeneffekt dessen, wonach ich suche. Ich versuche, das Antwortobjekt zu glätten, damit ich Autorennamen, Nachricht, Zeit alle auf einer Ebene haben kann. Mein Root-Problem ist, dass ich für einen einzelnen Commit nicht auf Informationen wie den Autorennamen zugreifen kann, da mehrere Ebenen in die JSON-Antwort eingebettet sind. –
1) Es gibt keine programmatische Möglichkeit, dies zu tun, da verschachtelte Dicts Schlüsselnamen duplizieren könnten. 2) Welche Sprache verwenden Sie zum Anzeigen/Analysieren der JSON-Antwort, da Python unabhängig von der Tiefe die gesuchten Daten problemlos abrufen kann. Ich denke, ich kann nicht aus deinem Code ersehen, welcher Teil nicht funktioniert und was du brauchst, anstatt was du bekommst. –