![](/img/trans.png)
[英]how to check case insensitivity of properties in Json object and Json Arrays
[英]JSON How to search keys name value and print the objects that contains a string or set of strings with case insensitivity?
目標:
未經消毒的測試數據:
{
"PassworD": "dashnd8",
"Name": "Katy"
}
{
"PasSWOrd": "DJNAS98das98",
"Name": "Paulo"
}
{
"Pa$$word": "H(AD*Sn",
"Name": "Crissy"
}
{
"PW": "nA(*DS",
"Name": "Jamel"
}
{
"pW": "0d9asm0i",
"Name": "Denny"
}
凈化測試數據:
{
"Password": "PW",
"Name": "Katy"
}
{
"Password": "pW",
"Name": "Paulo"
}
{
"Password": "pw",
"Name": "Crissy"
}
{
"Password": "passWorD",
"Name": "Jamel"
}
{
"Password": "PAssword",
"Name": "Denny"
}
注意:如果 json object 有不同的層次結構,請添加必要的步驟來訪問您的數據
要有效地清理對象的 stream:
with_entries( if .key | ascii_downcase | IN("password", "pw", "pa$$word")
then .key="Password"
else . end)
有效地發送到 select,而無需清理結果:
select( any(keys_unsorted[] | ascii_downcase;
IN("password", "pw", "pa$$word") ) )
為了滿足搜索,我們將使用以下內容:
select()
:選擇我們將選擇顯式搜索的鍵ascii_downcase
:此修飾符對於您不知道鍵是否具有特定值的這些類型的搜索很有幫助。 這將消除區分大小寫,即Tom vs tOm vs toM etc
contains()
: 幫助搜索多個值jq 'select( keys[]| ascii_downcase |contains( "pw","password"))'
BONUS:
但是,如果您想在更結構化的已清理數據中基於特定鍵搜索值,其中鍵名稱明確相同,則可能是另一種搜索,您可以通過執行此操作來搜索值 ->
jq 'select(.Password| ascii_downcase |contains( "pw","password"))'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.