我有 json 樹,嵌套了幾次,但最終分支有answer.
[{
"selects": [{
"selects": [{
"label":"A",
"answer": "1"
}]
},
{
"selects": [{
"label":"B",
"answer": "2"
}, {
"selects": [{
"answer": "3"
}, {
"answer": "4"
}]
}]
}
]
}]
現在我想更改“答案”的所有值
我目前的代碼是這樣的。
def double_answer(i):
return int(i)*2
def parse(obj):
#print(obj)
if type(obj) is list:
for i in obj:
#print(i)
return parse(i)
else :
#print(yourObj.keys())
if 'selects' in obj.keys():
return parse(obj['selects'])
if 'answer' in obj.keys():
obj['answer'] = double_answer(obj['answer'])
def run():
dict = [{
"selects": [{
"selects": [{
"label":"A",
"answer": "2"
}]
},{
"selects": [{
"label":"B",
"answer": "4"
}, {
"selects": [{
"answer": "6"
}, {
"answer": "8"
}]
}]
}]
}]
parse(dict)
print(dict)
表明。
[{'selects': [{'selects': [{'label': 'A', 'answer': 4}]}, {'selects': [{'label': 'B', 'answer': '4'}, {'selects': [{'answer': '6'}, {'answer': '8'}]}]}]}]
現在,json 中的第一個答案更改為 4(因此,它適用于第一項!!)
然而,遞回看起來到此為止。
我也想更改其他答案。
uj5u.com熱心網友回復:
問題在于return決議串列時的陳述句:
if type(obj) is list:
for i in obj:
#print(i)
return parse(i)
這僅在串列中的第一個值上遞回,所有其他值都不會被觸及。如果要處理整個資料結構,請擺脫return:
if type(obj) is list:
for i in obj:
#print(i)
parse(i) # don't return here!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/431223.html
上一篇:如何在陣列串列中添加影片json檔案并在我們迭代時在螢屏上顯示這些影片?
下一篇:獲取JSON的多個屬性
