我有一个 JSON 对象,如下所示:
[{"name":"NAME_1"},"NAME_2"]
Run Code Online (Sandbox Code Playgroud)
我想要一个输出
["NAME_1", "NAME_2"]
Run Code Online (Sandbox Code Playgroud)
数组中的某些条目是带有“名称”键的对象,有些只是名称的字符串。我正在尝试提取名称数组。使用
jq -cr '.[].name // []'
Run Code Online (Sandbox Code Playgroud)
当它尝试索引字符串对象的 .name 时抛出错误。有没有办法检查它是否是字符串,如果是,则只需使用它的值而不是 .name ?
echo \'[{"name":"NAME_1"},"NAME_2"]\' \\\n| jq \'[ .[] | if (.|type) == "object" then .name else . end ]\'\nRun Code Online (Sandbox Code Playgroud)\n[\n "NAME_1"\n "NAME_2"\n]\nRun Code Online (Sandbox Code Playgroud)\n参考:
\n正如 @L\xc3\xa9aGris 评论的那样,一个更简单的版本
\njq \'[ .[] | .name? // . ]\' file\nRun Code Online (Sandbox Code Playgroud)\n