Как получить файл json с поданной формой данных?

#python #json

Вопрос:

Этот код успешно используется для получения данных «версия» и «формы». (для меня в data.get(«фигуры»):) но когда я переключаю «фигуры» на «метку» ,возникает проблема

Ошибка типа: объект «Нетип» не может быть повторен

Спасибо за помощь.

 {
  "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="")
 

Комментарии:

1. Поделитесь содержимым B123.json . Скорее всего, в нем нет "shapes" определенного. Или ты имеешь в виду, что тебя переименовали "shapes" в "label" ?

Ответ №1:

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 []:
 

Комментарии:

1. поэтому я использую код, который вы указали, и показываю «{‘label’: ‘2’, ‘точки’: [[602.8, 590.2], [610.3, 642.0]]}» если я просто хочу показать значение «ярлык». как? еще раз спасибо

2. Пожалуйста, проверьте код еще раз. Здесь мы просто напечатали shapes явно. Если вы видите label , points , и все остальное, то, возможно, вы просто добавили код, которого не было в вашем первоначальном вопросе. Обновите вопрос и давайте посмотрим, с какими проблемами вы все еще сталкиваетесь.

Ответ №2:

Поскольку «форма» — это список диктантов, вы его записываете. Но метка находится внутри shapes dict, вы не можете просто заменить «фигуры» на «метку», также, когда вы получите содержимое метки, вы все равно не сможете повторить ее, потому что значение метки ключа не является списком или диктом