此代码成功获取"版本";和";shapes"数据。(对于data.get("shapes")中的I:)但当我改变形状时到"标签",问题来了
TypeError: 'NoneType' object is not iterable
谢谢帮助。
{
"version": "4.5.7",
"flags": {},
"shapes": [
{
"label": "2",
"points": [
[
602.8,
590.2
],
[
610.3,
642.0
]
]
}
],
"imagePath": "ladybug_13451176_20200410_141545_ColorProcessed_000497_Cam0_20059_026-2678.png",
"imageWidth": 1024
}
import json
import jsonpath
import io
with open("B123.json", mode="r") as dict:
data = json.load(dict)
for i in data.get("shapes"):
print(i,end="")
data
的类型为dict。调用dict.get()将返回值(如果存在)或None
(如果不存在)。
所以如果你的数据变化,可能没有定义的"shapes"
,不要只是迭代它,因为你可以在None
对象上迭代。所以替换这个:
for i in data.get("shapes"):
请先打个勾。
if "shapes" in data:
for i in data.get("shapes"):
或者更好的是最大化or
操作,如果前一个操作的值为假,则继续执行下一个操作。
for i in data.get("shapes") or []:
因为"是一个字典列表,你把它标出来。但是标签是在形状字典里的,你不能直接替换形状字典。通过"label",当您将获得label的内容时,您仍然无法迭代它,因为键label的值不是列表或字典