如何解决如果不使用jq
我正在尝试在JSON文件的每一行中添加一个particluar关键字(如果尚不存在的话)。
我的初始文件:
[{"type": "STRING","name": "Article"},{"type": "STRING","name": "Sellable_UOM"},"name": "PriceFamilyCode"},"name": "PriceFamilyDescription"},"name": "SalesDistrict"},{"type": "DATE","name": "FiscalWeekendDate"},"mode": "REPEATED","name": "export_sql"},"name": "post_sql"}]
预期输出:
[{"type": "STRING","mode": "NULLABLE","name": "post_sql"}]
要求: 如果线路剂量包含 mode 值,则将其插入为type和name属性之间的“ mode”:“ NULLABLE”。
我要达到的最终结果是从上述预期输出中获得如下所示的字段及其对应的日期类型和模式。
最终结果:
Article,STRING,NULLABLE
Sellable_UOM,NULLABLE
PriceFamilyCode,NULLABLE
PriceFamilyDescription,NULLABLE
SalesDistrict,NULLABLE
FiscalWeekendDate,DATE,NULLABLE
export_sql,REPEATED
post_sql,REPEATED
我试图实现的命令来自预期的输出json,
jq -r '.[] |[ .name,.type,.mode]|@csv' file1.json | sed s/'"'//g
解决方法
下面的程序通过在每个没有mode: "NULLABLE"
键的对象的type
和name
键之间插入mode
对来产生预期的输出。
map(select(has("mode") | not) |= {type,mode: "NULLABLE",name})
但是,如果这里的目的是将输入的JSON转换为CSV,我认为不需要中间结构。假设mode
不存在或为非null值,则可以使用替代运算符进行直接转换,如下所示。
.[] | [.type,.mode // "NULLABLE",.name] | @csv
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。