Apa yang akan diperkenalkan oleh editor php Xiaoxin hari ini ialah syarat "nilai dalam senarai" apabila menggunakan pelaksanaan Golang JQ. Di Golang, JQ ialah bahasa pertanyaan yang berkuasa untuk mengekstrak dan mengubah maklumat daripada data JSON. Keadaan "nilai dalam senarai" ialah syarat yang biasa digunakan dalam pertanyaan JQ Ia boleh digunakan untuk menapis elemen dalam senarai yang mengandungi nilai tertentu. Dengan menggunakan pelaksanaan Golang JQ, kami boleh melaksanakan fungsi ini dengan mudah, dengan itu memudahkan pemprosesan data JSON kami dan meningkatkan kecekapan pembangunan. Seterusnya, kami akan memperincikan cara melaksanakan syarat "nilai dalam senarai" menggunakan pelaksanaan Golang JQ.
Saya menggunakan perpustakaan ini dalam aplikasi Go saya: https://github.com/itchyny/gojq Ia berfungsi dengan baik, tetapi saya tidak dapat mencari cara untuk melakukan sesuatu dalam dokumentasi JQ. Saya mempunyai pertanyaan jq yang inputnya ialah senarai kedai yang tersedia dari fail konfigurasi seperti ini:
( [.stores[] | select( .is_open == true )] | length > 1 ) and ( [.stores[] | select( .name == "Some store" )] | length == 1 )
Pada asasnya ia bermaksud, daripada senarai kedai yang ada di kawasan saya, sekurang-kurangnya satu dibuka, dan, daripada senarai kedai yang ada di kawasan saya, sekurang-kurangnya satu dipanggil "sesetengah kedai". (Perhatikan bahawa ini adalah dua syarat yang berasingan, saya tidak kisah jika "Sesetengah kedai" ditutup).
Sekarang saya perlu menukar syarat ini supaya setiap kedai akan mempunyai "type_identifier" iaitu rentetan dan bukannya menggunakan syarat kedua untuk melihat nama. Pada asasnya apa yang saya mahukan adalah seperti ini:
( [.stores[] | select( .type_identifier in ["type1","type2", "type2"...] )] | length == 1 )
Senarai jenis yang tersedia mempunyai kira-kira 600 jenis yang berbeza. Jadi soalan saya ialah:
Terima kasih terlebih dahulu
Jika senarai itu panjang, lebih baik buat jadual carian.
( [ "type1", "type2", "type3" ] | map( { (.): true } ) | add ) as $lkup | .stores | ( map( select( .is_open ) ) | length > 1 ) and ( map( select( $lkup[ .type_identifier ] ) ) | length == 1 )
Saya letak yang biasa .stores
分解出来,替换成了 [ .[] | ... ]
与 map( ... )
.
Anda juga boleh menggunakan INDEX
.
( [ "type1", "type2", "type3" ] | INDEX( .[]; . ) ) as $lkup | .stores | ( map( select( .is_open ) ) | length > 1 ) and ( map( select( $lkup[ .type_identifier ] ) ) | length == 1 )
Atas ialah kandungan terperinci Pelaksanaan Golang menggunakan JQ dengan keadaan 'nilai dalam senarai'.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!