我正在使用Python 3.6来解析由一堆嵌套字典组成的JSON文件。当我循环使用JSON时,我期待我的内部循环应该返回一个字典,但Python告诉我它是一个字符串,我不知道为什么。
以下是我正在解析的JSON文件的相关摘录:
"SaveDataList": [
{
"PartyData": {
"ResourceInventory": {
"resources": {
"Herbs": {
"resourceID": "Herbs",
"resourceType": "Herbs",
"amount": 19,
"amountReserved": 0
}
“资源”下有更多项目,但您明白了。 这是我解析JSON的代码:
for x in SaveJSON["SaveDataList"]:
if "SaveGame.GlobalData" in x["$type"]:
for y in x["PartyData"]["ResourceInventory"]["resources"]:
print(y,": ",y["amount"],sep='')
我这样做的错误是“TypeError:string indices必须是整数”。当我type(y)
时,它会返回<class 'str'>
。当我type(x)
时,它会返回<class 'dict'>
。我不明白为什么。在我看来,y应该返回“Herbs”字典对象。
所以我的问题是,如何在“资源”下获取每个字典对象?谢谢。
答案 0 :(得分:0)
我猜你必须通过&#34; {}&#34; 初始化字典,而你实际上并没有将y定义为字典。对于python来说,&#34; y&#34;在循环中只是之后定义的东西中的一个元素。
一开始创建一个空字典,然后用新数据更新它。
y = {}
for x in SaveJSON["SaveDataList"]:
if "SaveGame.GlobalData" in x["$type"]:
for i in x["PartyData"]["ResourceInventory"]["resources"]:
print( y.update(i) )
我想它应该解决问题,现在类型(y)将返回&#34;字典&#34;型