У меня есть 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
}
]
]