这是我的输入 JSON
{
"uuid":123,
"description": [
{
"car_name":"Toyota",
"saleDate":"23 May 2017"
}
]
}
Run Code Online (Sandbox Code Playgroud)
预期输出:
{
"uuid":123,
"description": [
{
"name":"Toyota",
"saleDate":"23 May 2017"
}
]
}
Run Code Online (Sandbox Code Playgroud)
规则:.description[]|={name:.car_name,saleDate}
我能够通过这条规则达到预期的结果。但是,有没有一种方法可以将“car_name”属性重命名为“name”,并且在规则中不提及所有其他属性(在本例中为“saleDate”)。我可能最终在对象中拥有 50 多个属性,我不想在规则中提及所有这些属性。
数组中可以有多个对象。
这是你想要的吗?
jq '.description[]
|= . +
if has("car_name") then {"name":.car_name}
else null end
| del(.description[].car_name)'
Run Code Online (Sandbox Code Playgroud)
if-then 块将对象 {name:.car_name} 添加到描述数组中具有名称为“car_name”的键的任何对象,并向数组中不具有名称为“car_name”的键的任何对象添加任何内容(空)那个名字。
del 函数删除路径表达式 .description[].car_name 处的键值对
| 归档时间: |
|
| 查看次数: |
1661 次 |
| 最近记录: |