Я пытаюсь настроить иерархию файлов конфигурации JSON, где значения по умолчанию могут быть переопределены на нескольких уровнях.Каждый файл представляет собой набор пар ключ / значение.Многие из них организованы по функциям в не алфавитном порядке.
Я нашел способ получить желаемый логический результат, но он отсортирован в алфавитном порядке, и из-за количества ожидаемых параметров,пользователю будет трудно четко / быстро увидеть, является ли набор тем, что он хочет, прежде чем использовать его.
Есть ли способ выполнить такое объединение, заменив значения на соответствующих ключах и сохранив порядок?
У меня есть следующие файлы:
default.json:
[
{ "ParameterKey": "FirstStackName", "ParameterValue": "Production-App-Database" },
{ "ParameterKey": "SecondStackName", "ParameterValue": "Production-Directory" },
{ "ParameterKey": "ThirdStackName", "ParameterValue": "Production-VPC" },
{ "ParameterKey": "FourthStackName", "ParameterValue": "AMIFunctions" },
{ "ParameterKey": "FifthKeyName", "ParameterValue": "administrator" },
{ "ParameterKey": "SixthUserName", "ParameterValue": "admin" },
{ "ParameterKey": "SeventhPassword", "ParameterValue": "" }
]
environment.json:
[
{ "ParameterKey": "FirstStackName", "ParameterValue": "Development-App-Database" },
{ "ParameterKey": "SecondStackName", "ParameterValue": "Development-Directory" },
{ "ParameterKey": "ThirdStackName", "ParameterValue": "Development-VPC" },
{ "ParameterKey": "FifthKeyName", "ParameterValue": "developer" }
]
user.json:
[
{ "ParameterKey": "FifthKeyName", "ParameterValue": "jdoe" }
]
secure.json:
[
{ "ParameterKey": "SeventhPassword", "ParameterValue": "secretvalue" }
]
Если я запускаю это:
jq -s '.[3] + .[2] + .[1] + .[0] | unique_by(.ParameterKey)' default.json environment.json user.json secure.json
Я получаю что-то, что работает:
[
{
"ParameterKey": "FifthKeyName",
"ParameterValue": "jdoe"
},
{
"ParameterKey": "FirstStackName",
"ParameterValue": "Development-App-Database"
},
{
"ParameterKey": "FourthStackName",
"ParameterValue": "AMIFunctions"
},
{
"ParameterKey": "SecondStackName",
"ParameterValue": "Development-Directory"
},
{
"ParameterKey": "SeventhPassword",
"ParameterValue": "secretvalue"
},
{
"ParameterKey": "SixthUserName",
"ParameterValue": "admin"
},
{
"ParameterKey": "ThirdStackName",
"ParameterValue": "Development-VPC"
}
]
Но (представьте60 параметров) это не так просто отсканировать как правильно, и я хочу вот что:
[
{ "ParameterKey": "FirstStackName", "ParameterValue": "Development-App-Database" },
{ "ParameterKey": "SecondStackName", "ParameterValue": "Development-Directory" },
{ "ParameterKey": "ThirdStackName", "ParameterValue": "Development-VPC" },
{ "ParameterKey": "FourthStackName", "ParameterValue": "AMIFunctions" },
{ "ParameterKey": "FifthKeyName", "ParameterValue": "jdoe" },
{ "ParameterKey": "SixthUserName", "ParameterValue": "admin" },
{ "ParameterKey": "SeventhPassword", "ParameterValue": "secretvalue" }
]