Json 如果没有使用jq在每个对象中插入键值对
我试图在JSON文件的每一行中添加一个particluar关键字,如果它还不存在的话 我的初始文件:Json 如果没有使用jq在每个对象中插入键值对,json,jq,Json,Jq,我试图在JSON文件的每一行中添加一个particluar关键字,如果它还不存在的话 我的初始文件: [{"type": "STRING", "name": "Article"}, {"type": "STRING", "name": "Sellable_UOM"}, {"type": "STRING&quo
[{"type": "STRING", "name": "Article"},
{"type": "STRING", "name": "Sellable_UOM"},
{"type": "STRING", "name": "PriceFamilyCode"},
{"type": "STRING", "name": "PriceFamilyDescription"},
{"type": "STRING", "name": "SalesDistrict"},
{"type": "DATE", "name": "FiscalWeekendDate"},
{"type": "STRING", "mode": "REPEATED", "name": "export_sql"},
{"type": "STRING", "mode": "REPEATED", "name": "post_sql"}]
[{"type": "STRING", "mode": "NULLABLE", "name": "Article"},
{"type": "STRING", "mode": "NULLABLE", "name": "Sellable_UOM"},
{"type": "STRING", "mode": "NULLABLE", "name": "PriceFamilyCode"},
{"type": "STRING", "mode": "NULLABLE", "name": "PriceFamilyDescription"},
{"type": "STRING", "mode": "NULLABLE", "name": "SalesDistrict"},
{"type": "DATE", "mode": "NULLABLE", "name": "FiscalWeekendDate"},
{"type": "STRING", "mode": "REPEATED", "name": "export_sql"},
{"type": "STRING", "mode": "REPEATED", "name": "post_sql"}]
Article,STRING,NULLABLE
Sellable_UOM,STRING,NULLABLE
PriceFamilyCode,STRING,NULLABLE
PriceFamilyDescription,STRING,NULLABLE
SalesDistrict,STRING,NULLABLE
FiscalWeekendDate,DATE,NULLABLE
export_sql,STRING,REPEATED
post_sql,STRING,REPEATED
预期输出:
[{"type": "STRING", "name": "Article"},
{"type": "STRING", "name": "Sellable_UOM"},
{"type": "STRING", "name": "PriceFamilyCode"},
{"type": "STRING", "name": "PriceFamilyDescription"},
{"type": "STRING", "name": "SalesDistrict"},
{"type": "DATE", "name": "FiscalWeekendDate"},
{"type": "STRING", "mode": "REPEATED", "name": "export_sql"},
{"type": "STRING", "mode": "REPEATED", "name": "post_sql"}]
[{"type": "STRING", "mode": "NULLABLE", "name": "Article"},
{"type": "STRING", "mode": "NULLABLE", "name": "Sellable_UOM"},
{"type": "STRING", "mode": "NULLABLE", "name": "PriceFamilyCode"},
{"type": "STRING", "mode": "NULLABLE", "name": "PriceFamilyDescription"},
{"type": "STRING", "mode": "NULLABLE", "name": "SalesDistrict"},
{"type": "DATE", "mode": "NULLABLE", "name": "FiscalWeekendDate"},
{"type": "STRING", "mode": "REPEATED", "name": "export_sql"},
{"type": "STRING", "mode": "REPEATED", "name": "post_sql"}]
Article,STRING,NULLABLE
Sellable_UOM,STRING,NULLABLE
PriceFamilyCode,STRING,NULLABLE
PriceFamilyDescription,STRING,NULLABLE
SalesDistrict,STRING,NULLABLE
FiscalWeekendDate,DATE,NULLABLE
export_sql,STRING,REPEATED
post_sql,STRING,REPEATED
要求:
如果行dosent包含mode值,则将其作为“mode”:“NULLABLE”插入type和name属性之间
我试图实现的最终结果是从上述预期输出中获得字段及其对应的日期类型和模式,如下所示
最终结果:
[{"type": "STRING", "name": "Article"},
{"type": "STRING", "name": "Sellable_UOM"},
{"type": "STRING", "name": "PriceFamilyCode"},
{"type": "STRING", "name": "PriceFamilyDescription"},
{"type": "STRING", "name": "SalesDistrict"},
{"type": "DATE", "name": "FiscalWeekendDate"},
{"type": "STRING", "mode": "REPEATED", "name": "export_sql"},
{"type": "STRING", "mode": "REPEATED", "name": "post_sql"}]
[{"type": "STRING", "mode": "NULLABLE", "name": "Article"},
{"type": "STRING", "mode": "NULLABLE", "name": "Sellable_UOM"},
{"type": "STRING", "mode": "NULLABLE", "name": "PriceFamilyCode"},
{"type": "STRING", "mode": "NULLABLE", "name": "PriceFamilyDescription"},
{"type": "STRING", "mode": "NULLABLE", "name": "SalesDistrict"},
{"type": "DATE", "mode": "NULLABLE", "name": "FiscalWeekendDate"},
{"type": "STRING", "mode": "REPEATED", "name": "export_sql"},
{"type": "STRING", "mode": "REPEATED", "name": "post_sql"}]
Article,STRING,NULLABLE
Sellable_UOM,STRING,NULLABLE
PriceFamilyCode,STRING,NULLABLE
PriceFamilyDescription,STRING,NULLABLE
SalesDistrict,STRING,NULLABLE
FiscalWeekendDate,DATE,NULLABLE
export_sql,STRING,REPEATED
post_sql,STRING,REPEATED
我试图实现的命令来自预期的输出json是
jq -r '.[] |[ .name, .type, .mode]|@csv' file1.json | sed s/'"'//g
下面的程序通过在没有
模式
键的每个对象的类型
和名称
键之间插入模式:“null”
对来生成预期的输出
map(select(has("mode") | not) |= {type, mode: "NULLABLE", name})
但是,如果这里的目的是将输入JSON转换为CSV,我认为不需要中间结构。假设模式
不存在或为非空值,则替代运算符可用于直接转换,如下所示
[]|[.type、.mode//“NULLABLE”、.name]|@csv