gpt4 book ai didi

json - jq查询格式csv导出

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:55 24 4
gpt4 key购买 nike

我有一个带有 JQ 的 bash 脚本,但不知道如何执行查询以获得以下结果:

conversationId(1),participantId(1),participantName(1),sessionId(1)conversationId(1),participantId(2),participantName(2),sessionId(2)conversationId(1)、participantId(3)、participantName(3)、sessionId(3)conversationId(2),participantId(4),participantName(4),sessionId(4)...conversationId(n),participantId(n),participantName(n),sessionId(n)

我的文件:data.json

{
"conversations": [
{
"conversationId": "cxx-cccc-4444-9999-b11111111",
"conversationStart": "2016-06-5T00:10:15.412Z",
"conversationEnd": "2016-06-5T00:11:19.447Z",
"participants": [
{
"participantId": "2aaaa-1555-4590-99aa-4yyyyyyy",
"userId": "91111-7rrrr-4000-aqaa-23232323",
"purpose": "user",
"sessions": [
{
"mediaType": "voice",
"sessionId": "1111111-aaaa-4009-9000-488888",
"ani": "sip:user+localhost.com@localhost",
"direction": "outbound",
"dnis": "tel:+1111110000",
"edgeId": "e3e3e3-4ª4q-4b4b-9792-95959595",
"segments": [
{
"segmentStart": "2016-06-15T00:10:15.412Z",
"segmentEnd": "2016-06-15T00:10:10.485Z",
"segmentType": "contacting",
"conference": false
},
{
"segmentStart": "2016-06-15T00:10:10.485Z",
"segmentEnd": "2016-06-15T00:10:10.522Z",
"segmentType": "dialing",
"conference": false
},
{
"segmentStart": "2016-06-15T00:20:10.522Z",
"segmentEnd": "2016-06-15T00:11:09.436Z",
"disconnectType": "client",
"segmentType": "interact",
"conference": false
}
]
}
]
},
{
"participantId": "e9e9e9-d777-4a4a-8989-aeaeaeaeae",
"participantName": "Namek, Sayayin",
"purpose": "ivr",
"sessions": [
{
"mediaType": "voice",
"sessionId": "262626-6000-4cdd-a511-fafafafa",
"ani": "sip:goku%localhost.com@localhost",
"direction": "inbound",
"edgeId": "e3e3e3e3-4abc-4abc-9700-95959595",
"remoteNameDisplayable": "Namek, Sayayin",
"segments": [
{
"segmentStart": "2016-06-15T00:10:10.510Z",
"segmentEnd": "2016-06-15T00:10:10.521Z",
"segmentType": "system",
"conference": false
},
{
"segmentStart": "2016-06-15T00:10:20.521Z",
"segmentEnd": "2016-06-15T00:11:39.447Z",
"disconnectType": "peer",
"segmentType": "ivr",
"conference": false
}
]
}
]
}
]
},
{
"conversationId": "09090909-6b60-8888-xxxx-9yyyyyyyy",
"conversationStart": "2016-06-15T00:11:38.867Z",
"conversationEnd": "2016-06-15T01:54:55.744Z",
"participants": [
{
"participantId": "xxxc-cccc1-4123-7777-343434343e",
"userId": "9qwer-7zxc-40df-aghj-2323232323",
"purpose": "user",
"sessions": [
{
"mediaType": "voice",
"sessionId": "101010-0faz-4xxx-yyyy-4419441",
"ani": "sip:goku+localhost.com@localhost",
"direction": "outbound",
"dnis": "tel:+11112222333",
"edgeId": "nenene1-qwer-tyui-9000-9595gggh",
"segments": [
{
"segmentStart": "2016-06-15T00:11:18.867Z",
"segmentEnd": "2016-06-15T00:11:42.637Z",
"segmentType": "contacting",
"conference": false
}
]
} ]
} ]
} ]
}

我的查询jq:

jq . '{conversationId: .conversations[].conversationId, participantId: .conversations[].participants[].participantId,participantName: .conversations[].participants[].participantName} | join(",")'

但字段 conversationId 和 participantName 重复了几次......

最佳答案

根据您的输入,以下过滤器:

.conversations[]
| [.conversationId]
+ (.participants[] | [.participantId, .participantName])

产生:

[
"cxx-cccc-4444-9999-b11111111",
"2aaaa-1555-4590-99aa-4yyyyyyy",
null
]
[
"cxx-cccc-4444-9999-b11111111",
"e9e9e9-d777-4a4a-8989-aeaeaeaeae",
"Namek, Sayayin"
]
[
"09090909-6b60-8888-xxxx-9yyyyyyyy",
"xxxc-cccc1-4123-7777-343434343e",
null
]

变体

请注意,上面的过滤器没有使用任何 jq 变量。有时介绍它们会很有帮助,因此可能会对以下变体感兴趣:

.conversations[]
| (.participants | range(0;length)) as $j
| [.conversationId]
+ (.participants[$j] | [.participantId, .participantName])

借助 jq 手册,您应该可以从这里获取它。

附录

ParticipantId(1),sessionId(1),mediaType(1),sessionId(1),ani(1),dnis(1)

我不太确定为什么您需要两次 sessionsId,但以下对应于您的第二个请求:

.conversations[].participants[]
| [.participantId] +
(.sessions[] | [.sessionId, .mediaType, .sessionId, .ani, .dnis])

关于json - jq查询格式csv导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51737608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com