我在閱讀python中的數據時遇到問題。行的一個的樣品是:使用Python讀取嵌套JSON列表和字典的字符串
foo_brackets='{"KEY2":[{"KEY2a":[{"KEY2a1":"4","KEY2a2":"5"},{"KEY2a1":"6","KEY2a2":"7"}],"KEY2b":"8"}],"KEY3":"9"}'
當我與json
加載,用於KEY2
的值被讀出在作爲列表,因爲括號,然後阻止我在我的期望的結果,得到的該是KEY2b
值:
>>> import json
>>> foo_brackets_json=json.loads(foo_brackets)
>>> foo_brackets_json['KEY2']['KEY2b']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
我可以嘗試刪除括號,但實際上是應該是一個列表,KEY2a
值。你可以看到這一點,如果我去掉所有的括號,並嘗試轉換成JSON:
>>> foo_no_brackets='{"KEY2":{"KEY2a":{"KEY2a1":"4","KEY2a2":"5"},{"KEY2a1":"6","KEY2a2":"7"},"KEY2b":"8"},"KEY3":"9"}'
>>> json.loads(foo_no_brackets)
# Traceback omitted since it's just the python error
ValueError: Expecting property name: line 1 column 45 (char 45)
foo_brackets
確實出現了有效的JSON(我測試here,用引號去掉),並得到如下:
{
"KEY2":[
{
"KEY2a":[
{
"KEY2a1":"4",
"KEY2a2":"5"
},
{
"KEY2a1":"6",
"KEY2a2":"7"
}
],
"KEY2b":"8"
}
],
"KEY3":"9"
}
問:
有沒有辦法對我來說,閱讀對象,如foo_brackets
,這樣我可以打電話foo_brackets_json['KEY2']['KEY2b']
?
使用foo_brackets_json ['KEY2'] [0] ['KEY2b']'有什麼問題? –
爲什麼你認爲這些括號是'額外的'?正如你發現的,它們是有效的JSON,它們表示一個*列表*。他們不是'額外的',除非你看起來不希望只有1個這樣的嵌套字典。 –
你是對的 - 感謝您的快速反饋。這只是一種與我以前看到的不同的格式,並且被列表和字典組合所拋棄。 – Tchotchke