我想删除所有以“隐藏”开头的键。重要的是要注意键可以嵌套在多个级别。我想使用正则表达式查看答案,尽管我认识到在我的示例中一个简单的contains就足够了。(我也不知道如何contains使用 BTW。)
输入 JSON 1:
{
"a": 1,
"b": 2,
"hideA": 3,
"c": {
"d": 4,
"hide4": 5
}
}
Run Code Online (Sandbox Code Playgroud)
所需的输出 JSON:
{
"a": 1,
"b": 2,
"c": {
"d": 4
}
}
Run Code Online (Sandbox Code Playgroud)
输入 JSON 2:
{
"a": 1,
"b": 2,
"hideA": 3,
"c": {
"d": 4,
"hide4": 5
},
"e": null,
"f": "hiya",
"g": false,
"h": [{
"i": 343.232,
"hide9": "private",
"so_smart": true
}]
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
由于您只是检查键的开头,因此startswith/1在这种情况下可以使用,否则可以使用test/1或test/2。然后您可以将要删除的路径传递给delpaths/1.
您可能希望事先按字符串过滤键(或转换为字符串)以说明树中的数组。
delpaths([paths | select(.[-1] | strings | startswith("hide"))])
Run Code Online (Sandbox Code Playgroud)
delpaths([paths | select(.[-1] | strings | test("^hide"; "i"))])
Run Code Online (Sandbox Code Playgroud)