Я пытаюсь обработать объект ответа, возвращенный из API-интерфейса BitBucket в Python. У меня есть следующий код, чтобы попытаться обработать ответ:Обработка многомерного объекта ответа из REST API в словаре Python
import requests
import json
url = 'http:www.sampleurl.com'
myResponse = requests.get(url,auth=("myusername","mypassword"))
jd = myResponse.json()
print(jd.keys())
И ключи отлично возвращаются. Однако в пределах определенного ключа возвращается список. Меня интересуют значения, содержащиеся в этом списке. В частности, меня интересуют значения внутри «значений». Есть ли способ разобрать информацию, содержащуюся в значениях до/после, становится списком?
Моя проблема сводится к тому, что у меня возникают проблемы с доступом к информации в родителях JSON Array в следующем ответе на образец.
{
"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
}
Вы просто хотите сократить данные ответа только на интересующие вас ключи? Я не понимаю вопрос? –
Это побочный эффект того, что я ищу. Я ищу, чтобы сгладить объект ответа, чтобы у меня было имя автора, сообщение, время на одном уровне. Моя основная проблема заключается в том, что для одной транзакции я не могу получить доступ к такой информации, как имя автора, потому что она похожа на несколько слоев в ответ json. –
1) Существует не программный способ сделать это, так как вложенные Dicts могут дублировать имена ключей. 2) Какой язык вы используете для просмотра/анализа ответа JSON, потому что Python может легко получить нужные вам данные, независимо от глубины. Думаю, я не могу сказать из вашего кода, какая часть не работает, и что вам нужно, а не то, что вы получаете. –