В рамках разработки пользовательских функций для листа Google с использованием Google Apps Script (GAS) я пытаюсь получить сплющенное дерево имен свойств (ключа?) Объекта. Меня не интересует какое-либо из значений, я просто хочу распечатать дерево точечных обозначений всех имен свойств (ключей) объекта. Объект имеет неизвестную глубину и неизвестную структуру.
пример:
{
"level1_prop1": "stuff",
"level1_prop2": 0,
"level1_prop3": 50,
"level1_prop4": [{
"level2_prop1": "more stuffs, and things",
"level2_prop2": "10000",
"level2_prop3": {
"level3_prop1": {
"level4_prop1": "other stuff",
"level4_prop1": "so much stuff",
},
"level3_prop2": null,
}
}, {
"level2_prop1": "still more and more",
"level2_prop2": "10001",
"level2_prop3": {
"level3_prop1": {
"level4_prop1": "other stuffssssss",
"level4_prop1": "so much stuffssssssss",
},
"level3_prop2": null,
}
}
]
}
желаемый вывод в строке или массиве строк:
object.level1_prop1
object.level1_prop2
object.level1_prop3
object.level1_prop4
object.level1_prop4.level2_prop1
object.level1_prop4.level2_prop2
object.level1_prop4.level2_prop3
object.level1_prop4.level2_prop3.level3_prop1
object.level1_prop4.level2_prop3.level3_prop1.level4_prop1
object.level1_prop4.level2_prop3.level3_prop1.level4_prop2
object.level1_prop4.level2_prop3.level3_prop2
В конечном итоге я хочу использовать это для выборочного удаления определенных свойств / ключей по всему объекту. например:
remove(object.level1_prop4.level2_prop3.level3_prop1)
приведет к
object.level1_prop1
object.level1_prop2
object.level1_prop3
object.level1_prop4
object.level1_prop4.level2_prop1
object.level1_prop4.level2_prop2
object.level1_prop4.level2_prop3
object.level1_prop4.level2_prop3.level3_prop2
обновление : добавление спецификации о том, что ответ предназначен для использования в пользовательской функции скрипта Служб Google (GAS), поскольку первая волна ответов вызывает ошибки, когда я вставляю их в файл code.gs , Приношу свои извинения тем, кто уже ответил под другим предлогом.