Я работаю с большим файлом конфигурации JSON (кстати, с набором запросов API Postman / Newman), и мне нужно выполнить некоторые изменения, прежде чем запускать его в приложении Node.
Пример конфигурации
let config = {
"name": "API Requests",
"item": [
{
"name": "Upload Data File",
"body": {
"formdata": [
{
"key": "filerename",
"value": "./tests/fixtures/data.txt",
"type": "text"
}
]
}
},
{
"name": "Another Group",
"item": [
{
"name": "Upload Profile Photo",
"body": {
"formdata": [
{
"key": "filerename",
"value": "./tests/fixtures/profilephoto.png",
"type": "text"
},
{
"key": "anotherkey",
"value": "1",
"type": "text"
}
]
}
}
]
}
]
}
function updateFormdataObjects(config) {
let updatedConfig;
// Process the object here and rewrite each of the formdata entries as described below
return updatedConfig;
}
Необходимые шаги
1) Искать внутри config
, чтобы найти всех потомков, которые содержат "key": "filerename"
2) Для каждого соответствующего потомка измените их ключи иследующие значения:
// Original object
{
"key": "filerename",
"value": "./tests/fixtures/anotherphoto.png",
"type": "text"
}
// Updated object
{
"key": "file", // change the value from "filerename" to "file"
"src": "./tests/fixtures/anotherphoto.png", // change the key from "value" to "src"
"type": "file" // change the value from "text" to "file"
}
3) После завершения верните весь измененный объект.
Примечания
- В главном объекте может быть много соответствующих потомков,Все они должны быть обработаны.
- Объект может иметь бесконечные уровни вложенности, поэтому функция должна учитывать это.
- Функция должна возвращать один измененный объект, который затем можно использовать в другом месте.
- Я запускаю этот скрипт как часть Node-приложения с ES6, поэтому могу максимально использовать