Извлечение значений без кавычек в jq: подробное руководство

При работе с данными JSON с использованием jq обычно извлекаются определенные значения из структуры JSON. Однако по умолчанию jq возвращает извлеченные значения, заключенные в кавычки. В этой статье блога мы рассмотрим различные методы получения значений без кавычек с помощью jq. Попутно мы предоставим примеры кода, иллюстрирующие каждый метод.

Метод 1: использование опции --raw-outputили -r.
Самый простой способ получить значение без кавычек в jq — использовать --raw-outputили его сокращение -r. Эта опция предписывает jq выводить строки в виде необработанного текста без какого-либо дополнительного форматирования.

Пример:
Рассмотрим следующий JSON:

{
  "name": "John Doe",
  "age": 30
}

Чтобы извлечь значение атрибута nameбез кавычек, вы можете использовать следующую команду:

jq -r '.name' input.json

Выход:

John Doe

Метод 2. Использование фильтра fromjson.
Другой подход к извлечению значений без кавычек — использование фильтра fromjson. Этот фильтр преобразует строку JSON в соответствующее значение JSON, эффективно удаляя кавычки.

Пример:
Предположим, у нас есть следующий JSON, сохраненный в виде строки:

"{ \"city\": \"New York\", \"population\": 8623000 }"

Чтобы извлечь значение cityбез кавычек, вы можете использовать фильтр fromjsonследующим образом:

echo $json_string | jq 'fromjson | .city'

Выход:

New York

Метод 3: использование функций манипуляции со строками
jq предоставляет различные функции манипуляции со строками, которые можно использовать для удаления кавычек из значения. Одной из таких функций является gsub, которая выполняет глобальную замену на основе регулярного выражения.

Пример:
Предположим, у нас есть следующий JSON:

{
  "message": "\"Hello, World!\""
}

Чтобы извлечь сообщение без кавычек, вы можете использовать следующую команду:

jq '.message | gsub("\""; "")' input.json

Выход: