Я новичок в jq и инструментах командной строки в целом, но мне нужно сгруппировать по вложенным структурам в файле JSON и сгладить вложенные структуры, и я не смог найти работоспособное решение в течение нескольких днейВот пример моего JSON.
[
{
"Value1": "0",
"Conversions": "0",
"Revenue": "0.00",
"serverTimestamp": 84615198,
"pluginsIcons": [
{
"pluginName": "pdf",
"pluginIcon": "pdf1"
},
{
"pluginName": "java",
"pluginIcon": "java1"
}
],
"plugins": "pdf, java",
"customVariables": {
"3": {
"customVariableValue3": "F",
"customVariableName3": "Gender"
},
"2": {
"customVariableValue2": "Person",
"customVariableName2": "Role"
},
"1": {
"customVariableValue1": "Partner1",
"customVariableName1": "Partner"
}
},
"interactions": "7",
"actions": "3",
"actionDetails": [
{
"timestamp": 84615195,
"interactionPosition": "1",
"type": "action"
},
{
"timestamp": 84615145,
"interactionPosition": "2",
"type": "action"
},
{
"timestamp": 84615693,
"interactionPosition": "3",
"type": "action",
"customVariables": {
"2": {
"customVariablePageValue2": "value2",
"customVariablePageName2": "name2"
},
"1": {
"customVariablePageValue1": "value1",
"customVariablePageName1": "name1"
}
}
}
],
"operatingSystem": "Windows 10"
},
{
"Value1": "18",
"Conversions": "1",
"Revenue": "0.00",
"serverTimestamp": 84615189,
"pluginsIcons": [
{
"pluginName": "pdf",
"pluginIcon": "pdf1"
}
],
"plugins": "pdf",
"customVariables": {
"3": {
"customVariableValue3": "M",
"customVariableName3": "Gender"
},
"2": {
"customVariableValue2": "Admin",
"customVariableName2": "Role"
},
"1": {
"customVariableValue1": "Place",
"customVariableName1": "Subdomain"
}
},
"interactions": "6",
"actions": "3",
"actionDetails": [
{
"timestamp": 84635189,
"timeSpent": "11",
"interactionPosition": "1",
"type": "action"
},
{
"timestamp": 846351834,
"timeSpent": "11",
"interactionPosition": "2",
"type": "search"
},
{
"timestamp": 846351832,
"timeSpent": "1",
"interactionPosition": "3",
"type": "action",
"customVariables": {
"2": {
"customVariablePageValue2": "value2",
"customVariablePageName2": "name2"
},
"1": {
"customVariablePageValue3": "value3",
"customVariablePageName3": "name3"
}
},
"generationTime": "890"
}
],
"operatingSystem": "Windows 10"
}
]
То, как должен выглядеть конечный результат, будет с одной уплощенной записью для каждого «действия» во вложенных массивах в «actionDetails»
Мне удалось сгладить структуры, но затем группировка (и дублирование других столбцов для каждого действия) становится запутанной.Группировка по «действиям» перед сглаживанием не работает для меня, потому что они вложенные.
Пример того, как должна выглядеть первая запись в исходном JSON, выглядит следующим образом:
[
{
"timestamp": 84615195,
"interactionPosition": "1",
"type": "action",
"Value1": "0",
"Conversions": "0",
"Revenue": "0.00",
"pluginName1": "pdf",
"pluginIcon1": "pdf",
"pluginName2": "java",
"pluginIcon2": "java",
"plugins": "pdf, java",
"Gender": "F",
"Role": "Person",
"Partner": "Partner1",
"interactions": "7",
"actions": "3",
"operatingSystem": "Windows 10"
},
{
"timestamp": 84615145,
"interactionPosition": "2",
"type": "action",
"Value1": "0",
"Conversions": "0",
"Revenue": "0.00",
"pluginName1": "pdf",
"pluginIcon1": "pdf",
"pluginName2": "java",
"pluginIcon2": "java",
"plugins": "pdf, java",
"Gender": "F",
"Role": "Person",
"Partner": "Partner1",
"interactions": "7",
"actions": "3",
"operatingSystem": "Windows 10"
},
{
"timestamp": 84615693,
"interactionPosition": "3",
"type": "action",
"Value1": "0",
"Conversions": "0",
"Revenue": "0.00",
"pluginName1": "pdf",
"pluginIcon1": "pdf",
"pluginName2": "java",
"pluginIcon2": "java",
"plugins": "pdf, java",
"Gender": "F",
"Role": "Person",
"Partner": "Partner1",
"interactions": "7",
"actions": "3",
"operatingSystem": "Windows 10",
"name1": "value1",
"name2": "value2"
}
]
Вы можете заметить выше, что некоторые из имен сглаженных ключей были заменены ассоциированным значением (внутри той же вложенной структуры).Это не совсем необходимо, но это был бы хороший бонус.Также стоит отметить: мой JSON большой (800 МБ), и я хотел бы это сделать, но я полагаю, что этот вопрос лучше всего поставить в другом вопросе.
Заранее спасибо за любую помощь или совет!