如何获得json文件的数据格式?



此代码成功获取"版本";和";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的值不是列表或字典

最新更新