Json 如果没有使用jq在每个对象中插入键值对

Json 如果没有使用jq在每个对象中插入键值对,json,jq,Json,Jq,我试图在JSON文件的每一行中添加一个particluar关键字,如果它还不存在的话 我的初始文件: [{"type": "STRING", "name": "Article"}, {"type": "STRING", "name": "Sellable_UOM"}, {"type": "STRING&quo

我试图在JSON文件的每一行中添加一个particluar关键字,如果它还不存在的话

我的初始文件:

[{"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