我正在尝试从json文件中提取嵌套值.我想打印出每个"id"键的每个值.我认为我很接近,但无法弄清楚为什么obj类型从dict变为列表,然后为什么我无法解析该列表.这是我正在使用的json的链接:http://hastebin.com/ratevimixa.tex
这是我目前的代码:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import json
json_data = open('JubJubProductions.json', 'r+')
jdata = json.loads(json_data.read().decode("utf-8"))
def recursion(dict):
for key, value in dict.items():
if type(value) == type(dict):
if key != "paging":
for key, value in value.items():
if isinstance (value,list):
print key
# place where I need to enter list comprehension?
if type(value) == type(dict):
if key == "id":
print " id found " + value
if key != "id":
print key + " 1st level"
if …Run Code Online (Sandbox Code Playgroud) 我有这样的JSON:
{
"ROLE_NAME": {
"FOO": {
"download_url": "http: //something.staging/12345/buzz.zip"
},
"BAR": {
"download_url": "http: //something.staging/12345/fizz.zip"
},
"download_url": "http: //something.staging/12345/fizzbuzz.zip",
"db_name": "somedb",
"db_server": "dbserver.staging.dmz",
"plugin": {
"server_url": "http: //lab.staging.corp/server/"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我写了一些python,用一个新值替换了"download_url"k:v(即new download_url).不幸的是,它只替换了json片段中的三个download_urls中的一个.我理解为什么,但是在解决方案方面遇到了一些困难,所以我在这里寻求帮助.
整个json对象是"数据"所以我这样做:
data["ROLE_NAME"]["download_url"] = download_url
Run Code Online (Sandbox Code Playgroud)
其中download_url是我赋给该变量的新值我需要做的是对于任何名为["download_url"的键]然后更新它,而不是我在我要去的层指定的那个.
我的一些代码可以提供帮助:
我在我的代码中获取了一些先前获得的值,并构建了一个返回响应的url.我从响应中提取一个值,用于构建download_url的值
buildinfo_url = "http://something.staging/guestAuth/app/rest/builds/?locator=buildType:%s,tags:%s,branch:branched:any" % (
bt_number,
list_json_load[role_name][0]['tag']
)
Run Code Online (Sandbox Code Playgroud)
发送HTTP请求
client = httplib2.Http()
response, xml = client.request(buildinfo_url)
Run Code Online (Sandbox Code Playgroud)
从响应xml中提取一些值并设置download_url变量
doc = ElementTree.fromstring(xml)
for id in doc.findall('build'):
build_id = "%s" % (id.attrib['id'])
try:
download_url = "http://something.staging/guestAuth/repository/download/%s/%s:id/%s" % (
bt_number,
build_id,
build_artifact_zip
)
data[role_name]["download_url"] …Run Code Online (Sandbox Code Playgroud)