У меня есть этот Json
{
"users": [
{
"first": "Stevie",
"last": "Wonder"
},
{
"first": "Michael",
"last": "Jackson"
}
]
}
Используя jq я хотел бы отображать имя и фамилию последовательно. Вот так -
Stevie Wonder
Michael Jackson
Вот как далеко я продвинулся -
jq '.users[].first, .users[].last'
Но это отображает
"Stevie"
"Michael"
"Wonder"
"Jackson"
Обратите внимание на следующее -
- Двойные кавычки, которые я не хочу.
- Возврат каретки, которую я не хочу.
- Это перемешано. Мой запрос сначала отображает все имена, а затем все фамилии. Тем не менее, я хочу первую-последнюю, первую-последнюю пару.
Вы можете использовать сложение для объединения строк.
Выше работает, когда оба
first
иlast
строки. Если вы извлекаете разные типы данных (число и строка), нам нужно преобразовать их в эквивалентные типы. Ссылаясь на решение по этому вопросу . Например.источник
" "
к числу. Ответ Эрика дает лучший результат для этого случая.(.numA|tostring) + " " + (.numB|tostring)
должно работать. Или используйте строку интерполяции вместо:"\(.numA) \(.numB)"
.jq '.users[] | .first + " " + .last'
, это работало очень хорошо, но вызывало новую строку между значением.first
и.last
. Я изменил" "
к"@"
а затем сделалsed 's/@/ /g'
на выходе , чтобы получить «John Smith» , как выход. Как то так:jq '.users[] | .first + "@" + .last' | sed 's/@/ /g'
источник
В то время как оба приведенных выше ответа хорошо работают, если ключ, значение являются строками, у меня была ситуация, чтобы добавить строку и целое число (ошибки jq, используя вышеприведенные выражения)
Требование: построить URL ниже json
Решение:
источник
\(...)
это интерполяция строк. Здесь он превращает число.ServicePort
в строку. Вместо+
знаков можно использовать интерполяцию, чтобы сделать это решение короче.Это произведет массив имен
источник
Я получил довольно близко к тому, что я хотел сделать что-то вроде этого
Вывод которого достаточно близок к yaml для меня, чтобы обычно импортировать его в другие инструменты без особых проблем. (Я до сих пор ищу способ экспортировать подмножество входных данных json)
источник
мой подход будет (ваш пример JSON не очень хорошо сформирован .. думаю, это только образец)
возвращает что-то вроде этого
и grep вывод с регулярным выражением.
источник