【发布时间】:2018-05-20 21:01:50
【问题描述】:
我有一个 API 可以将组成员身份报告为一个数组,其中每个组都是一个包含一组成员的数组元素。我想简化数据,但不删除数组边界。
当 API 产生三个组时,将其称为“3gr.json”:
[
{
"id" : "000E58D2E9B401400",
"members" : [
{
"id" : "000E58D2E9B401400",
"roomName" : "Room1",
"groupState" : {
"mute" : false,
"volume" : 15
},
"state" : {
"playbackState" : "STOPPED",
"volume" : 15,
"mute" : false
}
}
]
},
{
"id" : "000E58D2FA0601400",
"members" : [
{
"state" : {
"playbackState" : "STOPPED",
"volume" : 40,
"mute" : false
},
"id" : "000E58D2FA0601400",
"roomName" : "Room2",
"groupState" : {
"mute" : false,
"volume" : 40
}
}
]
},
{
"id" : "5CAAFD7B8C9801400",
"members" : [
{
"groupState" : {
"mute" : false,
"volume" : 15
},
"roomName" : "Room3",
"id" : "5CAAFD7B8C9801400",
"state" : {
"mute" : false,
"playbackState" : "STOPPED",
"volume" : 15
}
}
]
}
]
当有一组 API 产生这个输出时,称之为 '1gr.json' :
[
{
"id": "000E58D2E9B401400",
"members": [
{
"id": "000E58D2E9B401400",
"state": {
"volume": 44,
"mute": false,
"playbackState": "PAUSED_PLAYBACK",
"equalizer": {
"bass": 2,
"treble": 2,
"loudness": true
}
},
"roomName": "Room1",
"groupState": {
"volume": 46,
"mute": false
}
},
{
"id": "5CAAFDE9614001400",
"state": {
"volume": 54,
"mute": false,
"playbackState": "PAUSED_PLAYBACK",
"equalizer": {
"bass": 0,
"treble": 0,
"loudness": true
}
},
"roomName": "Room2",
"groupState": {
"volume": 65,
"mute": false
}
},
{
"id": "5CAAFD7B8C9801400",
"state": {
"volume": 41,
"mute": false,
"playbackState": "PAUSED_PLAYBACK",
"equalizer": {
"bass": 0,
"treble": 0,
"loudness": false
}
},
"roomName": "Room3",
"groupState": {
"volume": 41,
"mute": false
}
}
]
}
]
如果我使用jq 来处理这个输出:
jq '.[].members[]|{name: .roomName, state: .state.playbackState, vol: .state.volume}' 3gr.json
我明白了:
{
"name": "Room1",
"state": "STOPPED",
"vol": 15
}
{
"name": "Room2",
"state": "STOPPED",
"vol": 40
}
{
"name": "Room3",
"state": "STOPPED",
"vol": 15
}
如果我处理“1gr.json”,我会得到相同的输出结构(在这两个示例中,值并不重要):
{
"name": "Room1",
"state": "PAUSED_PLAYBACK",
"vol": 44
}
{
"name": "Room2",
"state": "PAUSED_PLAYBACK",
"vol": 54
}
{
"name": "Room3",
"state": "PAUSED_PLAYBACK",
"vol": 41
}
我想要的是保留组数组的数组边界。我尝试添加[ ] 的各种组合,但无济于事。所以我想看到的是:
[
[
{
"name": "Room1",
"state": "PAUSED_PLAYBACK",
"vol": 44
},
{
"name": "Room2",
"state": "PAUSED_PLAYBACK",
"vol": 54
},
{
"name": "Room3",
"state": "PAUSED_PLAYBACK",
"vol": 41
}
]
]
和
[
[
{
"name": "Room1",
"state": "PAUSED_PLAYBACK",
"vol": 44
}
],
[
{
"name": "Room2",
"state": "PAUSED_PLAYBACK",
"vol": 54
}
],
[
{
"name": "Room3",
"state": "PAUSED_PLAYBACK",
"vol": 41
}
]
]
【问题讨论】:
-
请遵循 mcve 指南。特别是,如果您可以显示至少一对输入和相应的输出,将会有所帮助。
-
我用两组输入和两组输出更新了问题。
-
我应该写“相应的期望输出”。目前尚不清楚(至少对我而言)保留数组边界是什么意思。
-
好的,我已经添加了我想查看的输出表单。谢谢。