php小編小新今天要介紹的是使用JQ的Golang實作時具有"列表中的值"條件。在Golang中,JQ是一種強大的查詢語言,用於從JSON資料中提取和轉換資訊。而"列表中的值"條件是在JQ查詢中常用的一種條件,它可以用來篩選出列表中包含指定值的元素。透過使用JQ的Golang實現,我們可以輕鬆實現這項功能,從而簡化我們對JSON資料的處理過程,提高開發效率。接下來,我們將詳細介紹如何使用JQ的Golang實作來實現"列表中的值"條件。
我在我的 Go 應用程式中使用這個函式庫:https://github.com/itchyny/gojq 它工作得很好,但我在 JQ 文件中找不到如何做某事。我有一個 jq 查詢,其輸入是設定檔中的可用商店列表,如下所示:
( [.stores[] | select( .is_open == true )] | length > 1 ) and ( [.stores[] | select( .name == "Some store" )] | length == 1 )
基本上是說,從我所在地區的可用商店列表中,至少有一家是開放的,而且,從我所在地區的可用商店列表中,至少有一家被稱為“某些商店”。 (請注意,它是兩個獨立的條件,我不在乎“Some store”是否關閉)。
現在我需要更改此條件,這樣每個商店都會有一個“type_identifier”,它是一個字串,而不是使用第二個條件來查看名稱。基本上我想要的是這樣的東西:
( [.stores[] | select( .type_identifier in ["type1","type2", "type2"...] )] | length == 1 )
可用類型清單有大約 600 種不同的類型。 所以我的問題是:
提前致謝
如果清單那麼長,最好建立一個查找表。
( [ "type1", "type2", "type3" ] | map( { (.): true } ) | add ) as $lkup | .stores | ( map( select( .is_open ) ) | length > 1 ) and ( map( select( $lkup[ .type_identifier ] ) ) | length == 1 )
我把常見的 .stores
分解出來,替換成了 [ .[] | ... ]
與 map( ... )
。
您也可以使用 INDEX
。
( [ "type1", "type2", "type3" ] | INDEX( .[]; . ) ) as $lkup | .stores | ( map( select( .is_open ) ) | length > 1 ) and ( map( select( $lkup[ .type_identifier ] ) ) | length == 1 )
以上是使用 JQ 的 Golang 實作時具有「列表中的值」條件的詳細內容。更多資訊請關注PHP中文網其他相關文章!