@GolosB
ИТшник

Как распарсить JSON в котором несколько блоков?

Ошибка json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:

import json

with open('filename.json', 'r') as f:
    for line in f:
        data = json.loads(line)
        # здесь происходит

{
   "NumberStat" : [
      {
         "ManNumDetection" : [
            {
               "AreaID" : 1,
               "Channel" : 0,
               "EndTime" : "2023-04-14 10:59:59",
               "EnteredSubtotal" : 0,
               "ExitedSubtotal" : 0,
               "StartTime" : "2023-04-14 10:00:00"
            }
         ],
         "SN" : "6M0D6EFPAG24E66",
         "Uploading Time" : "2023-04-14 11:00:49"
      }
   ]
}
{
   "NumberStat" : [
      {
         "ManNumDetection" : [
            {
               "AreaID" : 1,
               "Channel" : 0,
               "EndTime" : "2023-04-14 11:59:59",
               "EnteredSubtotal" : 0,
               "ExitedSubtotal" : 0,
               "StartTime" : "2023-04-14 11:00:00"
            }
         ],
         "SN" : "6M0D6EFPAG24E66",
         "Uploading Time" : "2023-04-14 12:00:49"
      }
   ]
}
  • Вопрос задан
  • 404 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Jack444
import json

with open('filename.json', 'r') as f:
    data = json.loads(
        '['+f.read().replace('}\n{', '},\n{')+']'
    )
    ...
Ответ написан
Комментировать
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Есть такой анекдот, "Иван Соломонович, вы или крестик снимите, или трусики наденьте".
Вот он очень подходит к вашему случаю.

Использованный вами код подходит только для файла, в котором на каждой строке лежит неформатированный JSON.
Поэтому надо или писать в файл JSON, не форматируя его,

{"NumberStat":[{"ManNumDetection":[{"AreaID":1,"Channel":0,"EndTime":"2023-04-14 10:59:59","EnteredSubtotal":0,"ExitedSubtotal":0,"StartTime":"2023-04-14 10:00:00"}],"SN":"6M0D6EFPAG24E66","Uploading Time":"2023-04-14 11:00:49"}]}
{"NumberStat":[{"ManNumDetection":[{"AreaID":1,"Channel":0,"EndTime":"2023-04-14 11:59:59","EnteredSubtotal":0,"ExitedSubtotal":0,"StartTime":"2023-04-14 11:00:00"}],"SN":"6M0D6EFPAG24E66","Uploading Time":"2023-04-14 12:00:49"}]}

или, как рекомендуют в других ответах, переформатировать эту стену текста как единый JSON массив
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы