У меня есть простой json
{
"years": [ "2018", "2019" ]
}
что я хочу прочитать с Бентосом. Однако, поскольку это «украшенный» json, Benthos читает каждую строку как сообщение. Как можно прочитать этот многострочный json с бентосом и уплотнить его для дальнейших нижестоящих процессоров?
input:
file:
paths: [./init.json]
codec: lines/multipart
pipeline:
processors: ??
output:
type: stdout
Конвейер должен просто печатать то же самое в stdout
, что и jq -c ./init.json
.
попробуй это:
input:
file:
paths: [./init.json]
codec: all-bytes
processors:
- mapping: |
root = this.format_json()
output:
stdout:
codec: all-bytes
Также обратите внимание, что текущая версия — V4, где type: stdout
— это не то, как вы указываете вывод. Подробности здесь.
Ключевое слово this
неявно анализирует JSON, если входные данные являются допустимыми JSON. В противном случае вы получите ошибку. Я добавил format_json()
, чтобы вы получили красивый вывод JSON.
спасибо за подсказку! так что это просто root = this
.
Да, это трансформация личности. В вашем случае полезно иметь его, если вы хотите проверить входной JSON. В противном случае он просто передает его на вывод в виде необработанных байтов.
Ах, спасибо за ответ и подсказку по поводу выхода! Я просто добавляю строку `root = root.parse_json()` в сопоставление, чтобы у меня был компактифицированный json в строке. Но я приму ваш ответ :)