我試圖過濾這個物件串列,只回傳 firstName 以特定值開頭的物件。
[
{"firstName":"Paul","lastName":"Collins"},
{"firstName":"Jerry","lastName":"Johnson"},
{"firstName":"Jody","lastName":"Johnson","occupation":"Occupado","company":"Companio"},
{"firstName":"Paul","lastName":"Johanson","occupation":"Developer","company":"Developer Co"}
]
我得到的最遠的是這樣的:
([].firstName | [?starts_with(@,'J') == `true`])
回傳:
[
"Jerry",
"Jody"
]
但是,我想回傳符合此條件的整個物件,而不僅僅是 firstName 欄位。我想要的輸出是:
[
{"firstName":"Jerry","lastName":"Johnson"},
{"firstName":"Jody","lastName":"Johnson","occupation":"Occupado","company":"Companio"},
]
我找不到將字串陣列傳遞給starts_with. 我可以從回傳值中獲取值并將它們插入到多個查詢中,一個查詢帶有一堆"|| firstName == name1 || firstName == name2". 但是我想嘗試在一個查詢字串中執行此操作。
有任何想法嗎?
uj5u.com熱心網友回復:
使用select( ... )過濾的流。通過擴展,您可以使用map( select( ... ) )從陣列中洗掉專案。
map( select( .firstName | startswith("J") ) )
演示
uj5u.com熱心網友回復:
在 JMESPath 中,如果這就是您要查找的內容,過濾器投影可以應用于陣列的任何屬性,只需在選擇陣列本身的括號中指定所述屬性即可。
因此,[].firstName該屬性不是 go,而是放在括號內,例如[?firstName == 'Jerry'],將為您提供名為Jerry的人的整個物件。
然后您可以使用以下方法應用它start_with():
[?starts_with(firstName,'J')]
這將產生預期的
[
{
"firstName": "Jerry",
"lastName": "Johnson"
},
{
"firstName": "Jody",
"lastName": "Johnson",
"occupation": "Occupado",
"company": "Companio"
}
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359690.html
上一篇:將JSON從AngularJS傳遞到SpringbootRestController不起作用
下一篇:讀取嵌套的JSON回傳NULL
