【发布时间】:2021-03-04 20:22:45
【问题描述】:
我观察到以下行为:
railnet= '''{
"nodes": [
{"data": { "id": 1,"name":"BER" }},
{"data": { "id": 2,"name": "MUN"}},
{"data": { "id": 3,"name": "FRA"}}
],
"edges": [
{"data": { "id": "BER - MUN", "source": "BER", "target": "MUN" }},
{"data": { "id": "MUN - FRA", "source": "MUN", "target": "FRA" }},
{"data": { "id": "FRA - BER", "source": "FRA", "target": "BER" }}
]
}'''
railnetJSON = json.loads(railnet)
print(railnetJSON['nodes'])
railnet 是一个字符串。到目前为止一切正常。
但是如果 railnet 是一个字典呢?:
railnet= {
"nodes": [
{"data": { "id": 1,"name":"BER" }},
{"data": { "id": 2,"name": "MUN"}},
{"data": { "id": 3,"name": "FRA"}}
],
"edges": [
{"data": { "id": "BER - MUN", "source": "BER", "target": "MUN" }},
{"data": { "id": "MUN - FRA", "source": "MUN", "target": "FRA" }},
{"data": { "id": "FRA - BER", "source": "FRA", "target": "BER" }}
]
}
print(type(railnet)) # ->dict
railnetJSON = json.dumps(railnet) # -> no error here
print(railnetJSON['nodes']) # -> error here
线
railnetJSON = json.dumps(railnet)
作品 但最后一行给出:
TypeError: string indices must be integers
问题是为什么我可以将字典转储到带有转储的 JSON(没有错误)但访问节点会引发错误。具有相同行为的正确方法是将变量作为字符串或字典传递给 JSON。
换句话说,如果您需要创建一个 JSON 对象以传递给另一个接受 JSON 的函数,那么当您有字典时该怎么做?
谢谢
【问题讨论】:
-
dumps()将字典转换为 JSON 字符串
标签: python json string dictionary