如何选取值为空字符串或仅含空格字符串的所有JSON路径
获取JSON中空字符串或仅含空格值的键路径
原始JSON数据:
{ "key0" : null, "key" : 1010, "key1" : "", "key2" : " ", "key3" : { "key4" : " ", "key5" : "test" } }
当前使用的jq表达式仅能匹配空字符串:
path(..|select(. == ""))
要扩展为匹配空字符串或仅含空格的字符串,可使用jq的test()函数结合正则^\s*$,修改后的表达式如下:
path(..|select(type == "string" and test("^\\s*$")))
说明
type == "string":先筛选出字符串类型的值,避免null、数字等非字符串类型被误判test("^\\s*$"):正则^\s*$会匹配空字符串,或仅包含任意数量空白字符(空格、制表符、换行符等)的字符串;jq中正则的反斜杠需要转义为\\
执行该表达式后,会返回所有符合条件的键路径:
["key1"] ["key2"] ["key3","key4"]
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

