У меня есть 2 объекта, например:
type appA struct {
appType string
frontend string
}
type appB struct {
appType string
backend string
}
У меня есть файл конфигурации в формате JSON, например:
[
{
"appType" : "A",
"frontend": "URL"
},
{
"appType": "B",
"backend": "SQL"
}
]
Согласно this отличная идея - я создал еще одну структуру:
type genericApp struct {
appType string
}
Так что теперь я могу красиво разархивировать JSON и узнать, какой объект в JSON является каким типом приложения. Теперь моя большая проблема заключается в том, как снова «маршалировать и отменять маршалинг» - могу ли я как-то ссылаться на уже распакованные объекты как интерфейс и повторно демаршировать их как разные объекты?
Единственное другое решение, которое у меня есть, - это чтение файла. N раз, каждый для каждого типа структуры, а затем l oop через массив genericApp и «собрать» соответствующий объект из соответствующего массива, но это звучит как ужасная практика ...
РЕДАКТИРОВАТЬ Я ответил на вопрос, используя нотацию json:...omitempty
, но у меня все еще есть проблема - что, если два отдельных объекта имеют одинаковое имя поля с разными типами? Например, appType может быть строкой или числом?