Saya punya Json ini
{
"users": [
{
"first": "Stevie",
"last": "Wonder"
},
{
"first": "Michael",
"last": "Jackson"
}
]
}
Menggunakan jq Saya ingin menampilkan nama depan dan belakang secara berurutan. Seperti begitu -
Stevie Wonder
Michael Jackson
Sejauh ini saya sudah sampai -
jq '.users[].first, .users[].last'
Tapi itu ditampilkan
"Stevie"
"Michael"
"Wonder"
"Jackson"
Perhatikan yang berikut -
- Kutipan ganda yang tidak saya inginkan.
- Kembalinya kereta yang tidak saya inginkan.
- Ini kacau. Kueri saya menampilkan semua nama depan terlebih dahulu, lalu semua nama belakang. Namun, saya ingin pasangan pertama-terakhir, pertama-terakhir.
Anda dapat menggunakan tambahan untuk string gabungan.
Di atas berfungsi ketika keduanya
first
danlast
adalah string. Jika Anda mengekstraksi tipe data yang berbeda (angka dan string), maka kami perlu mengonversi ke tipe yang setara. Mengacu pada solusi pada pertanyaan ini . Sebagai contoh.sumber
" "
angka. Jawaban Eric memberikan hasil yang lebih baik untuk kasus ini.(.numA|tostring) + " " + (.numB|tostring)
harus bekerja. Atau penggunaan interpolasi string sebagai gantinya:"\(.numA) \(.numB)"
.jq '.users[] | .first + " " + .last'
, itu bekerja dengan sangat baik, tetapi menyebabkan garis baru antara nilai.first
dan.last
. Saya mengubah" "
ke"@"
dan kemudian melakukansed 's/@/ /g'
pada output untuk mendapatkan "John Smith" sebagai output. Sesuatu seperti ini:jq '.users[] | .first + "@" + .last' | sed 's/@/ /g'
sumber
Sementara kedua jawaban di atas berfungsi dengan baik jika kunci, nilainya adalah string, saya memiliki situasi untuk menambahkan string dan integer (kesalahan jq menggunakan ekspresi di atas)
Persyaratan: Untuk membuat url di bawah json
Larutan:
sumber
\(...)
adalah interpolasi string. Di sini ia mengubah angka.ServicePort
menjadi string. Interpolasi dapat digunakan sebagai pengganti+
tanda - tanda untuk membuat solusi ini lebih pendek.Ini akan menghasilkan array nama
sumber
Saya cukup dekat dengan apa yang saya inginkan dengan melakukan sesuatu seperti ini
Keluaran yang cukup dekat dengan yaml bagi saya untuk biasanya mengimpornya ke alat lain tanpa banyak masalah. (Saya masih mencari cara untuk basicallt mengekspor subset dari input json)
sumber
pendekatan saya akan (contoh json Anda tidak terbentuk dengan baik .. tebak itu hanya sampel)
mengembalikan sesuatu seperti ini
dan grep output dengan ekspresi reguler.
sumber