Бентос читать украшенный json

У меня есть простой 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.

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
0
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

попробуй это:

input:
  file:
    paths: [./init.json]
    codec: all-bytes

  processors:
    - mapping: |
        root = this.format_json()

output:
  stdout:
    codec: all-bytes

Также обратите внимание, что текущая версия — V4, где type: stdout — это не то, как вы указываете вывод. Подробности здесь.

Ах, спасибо за ответ и подсказку по поводу выхода! Я просто добавляю строку `root = root.parse_json()` в сопоставление, чтобы у меня был компактифицированный json в строке. Но я приму ваш ответ :)

nerdizzle 20.04.2023 18:59

Ключевое слово this неявно анализирует JSON, если входные данные являются допустимыми JSON. В противном случае вы получите ошибку. Я добавил format_json(), чтобы вы получили красивый вывод JSON.

Mihai Todor 20.04.2023 19:02

спасибо за подсказку! так что это просто root = this.

nerdizzle 20.04.2023 19:12

Да, это трансформация личности. В вашем случае полезно иметь его, если вы хотите проверить входной JSON. В противном случае он просто передает его на вывод в виде необработанных байтов.

Mihai Todor 20.04.2023 19:37

Другие вопросы по теме