Другой отдел постоянно обновляет файл JSON, который я затем запрашиваю.Его формат состоит из трех списков похожих словарей:
{
"levels":
[
{"a":1, "b":False, "c":"2012", "d":"2017"}
,{"a":2, "b":True, "c":"2013", "d":"9999"}
,...
]
,"costs":
[
{"e":12, "f":"foo", "g":"blarg", "h":"2015", "i":"2018"}
,{"e":-3, "f":"foo", "g":"glorb", "h":"2013", "i":"9999"}
,...
]
,"recipes":
[
{"j":"BAZ", "k":["blarg","glorb","bleeg"], "l":"dill", "m":"2016", "n":"2017"}
,{"j":"BAZ", "k":["blarg","bleeg"], "l":"dill", "m":"2017", "n":"9999"}
,...
]
} # line 3943 (see below)
Недавно мои простые jq
запросы типа
jq '.["recipes"][] | select(.l | test("ill"))' < jsonfile
перестали возвращать все результаты, которые должны были (например, возвращать толькоодна из двух строк «Укроп» выше) и начал печатать это сообщение об ошибке:
jq: error (at <stdin>:3943): null (null) cannot be matched, as it is not a string
Строка 3943, упомянутая в ошибке, является последней строкой файла.Запросы к разделам «уровни» и «затраты» файла продолжают работать как обычно;нарушается только раздел «рецепты» файла, как будто jq
считает, что закрывающая скобка файла все еще является частью раздела «рецепты».
Для меня это говорит о том, что форматирование было выполненоизменение или ошибка в последнем разделе файла.Однако программное обеспечение, отличное от jq
(например, python
), не сообщает о проблемах при его разборе.Перед тем, как начать построчно вводить данные ... указывает ли это сообщение об ошибке на что-то очевидное для jq
эксперта?
Увы, я не сохраняю старые версии файла для сравнения.(Я думаю, что я начну сегодня.)