使用jq提取带转义反斜杠的嵌套JSON中keyTwo值并生成CSV
解析转义JSON字段并导出CSV
原始JSON数据
{ "getFeedFromMyTeam": [ { "OpenedAt": 1693321311, "feedData": "{\"keyOne\":\"my_data_one\",\"keyTwo\":\"my_data_two\"}", "feedId": "123456789", "recipients": [ { "receiverId": "johns", "receiverName": "John Smith" } ], "senderId": "janed", "senderName": "Jane Doe" } ], "hasMore": true, "paginationToken": "100" }
原有转换命令
cat my.json | jq -r '.getFeedFromMyTeam[] | .recipients[] as $t | [.OpenedAt,$t.receiverId,$t.receiverName,.senderId,.feedData] | @csv'
当前输出
1693321311,"johns","John Smith","janed","{""keyOne"":""my_data_one"",""keyTwo"":""my_data_two""}"
期望输出
1693321311,"johns","John Smith","janed","my_data_two"
解决方案(仅用jq实现)
只需将原有命令中的.feedData替换为.feedData | fromjson | .keyTwo,即可解析转义的JSON字符串并提取指定字段值:
cat my.json | jq -r '.getFeedFromMyTeam[] | .recipients[] as $t | [.OpenedAt,$t.receiverId,$t.receiverName,.senderId, (.feedData | fromjson | .keyTwo)] | @csv'
验证结果
执行上述命令后,输出将与期望完全一致:
1693321311,"johns","John Smith","janed","my_data_two"
内容的提问来源于stack exchange,提问作者dzafer
相关产品推荐
相关产品推荐

