Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jq:缺少JSON对象检测_Json_Jq - Fatal编程技术网

jq:缺少JSON对象检测

jq:缺少JSON对象检测,json,jq,Json,Jq,我的JSON数据: { "Tags": [ { "Key": "Team", "Value": "AA" }, { "Key": "Division", "Value": "BB" }, { "Key": "Name", "Value": "CC" } ] } 我想显示Name的值(在上面的示例中为“CC”)。 如果该值缺失,则应显示“不适用”。 我要寻找的是jq和bash混合的纯jq替

我的JSON数据:

{
  "Tags": [
           {  "Key": "Team",     "Value": "AA" },
           {  "Key": "Division", "Value": "BB" },
           {  "Key": "Name",     "Value": "CC" }
        ]
}
我想显示Name的值(在上面的示例中为“CC”)。 如果该值缺失,则应显示“不适用”。 我要寻找的是jq和bash混合的纯jq替代品:

a=$( cat json | jq -r '.Tags[] | select( .Key=="Name" ) | .Value' );
if [ -z $a ]; then a="N/A"; fi
echo $a

使用替代运算符,
/


jq-r'.Tags[]| select(.Key==“Name”)|.Value//“N/A”

以下是David Tolnay的完美解决方案:

在此引用:

试试这个:

jq -r '.Tags | from_entries | .Name // "N/A"'
这将使用from_条目将键/值对列表转换为映射,然后在映射中选择“名称”。然后,如果名称不在映射中,它使用“可选运算符”//生成“N/A”

这需要jq 1.5来理解from_条目中大写的“Key”和“Value”。如果您坚持使用jq 1.4或更高版本,则需要显式地将其转换为小写:

jq -r '.Tags | map({key:.Key, value:.Value}) | from_entries | .Name // "N/A"'

您的JSON数据无效,标记应该是字符串“Tags”谢谢,现在更正。