Конвертируйте плоские данные во вложенный JSON с помощью Go - PullRequest
2 голосов
/ 11 марта 2019

Я пытаюсь найти эффективный способ преобразования плоских данных из таблицы БД во вложенный JSON в Go.

Это мой код для загрузки набора данных в кусок структуры:

https://play.golang.org/p/_80nASVgds-

Который будет производить следующий JSON:

[{
    "Globe": "World",
    "Hemisphere": "Northern",
    "Country": "USA"
}, {
    "Globe": "World",
    "Hemisphere": "Southern",
    "Country": "Australia"
}, {
    "Globe": "World",
    "Hemisphere": "Southern",
    "Country": "Brazil"
}, {
    "Globe": "World",
    "Hemisphere": "Southern",
    "Country": "South Africa"
}, {
    "Globe": "World",
    "Hemisphere": "Northern",
    "Country": "Spain"
}]

Я бы хотел иметь возможность кодировать один и тот же набор данных в нечто вроде:

type Globe struct {
    Name       string
    Hemisphere []Hemisphere
}

type Hemisphere struct {
    Name    string
    Country []Country
}

type Country struct {
    Name string
}

Так что я мог бы собрать Глоуба и получить тот же набор данных во вложенной форме как таковой:

https://play.golang.org/p/r9OlCw_EwSA

{
    "Name": "World",
    "Hemisphere": [{
        "Name": "Northern",
        "Country": [{
            "Name": "USA"
        }, {
            "Name": "Spain"
        }]
    }, {
        "Name": "Southern",
        "Country": [{
            "Name": "Australia"
        }, {
            "Name": "South Africa"
        }, {
            "Name": "Brazil"
        }]
    }]
}

Существует ли какой-либо эффективный способ сделать это, кроме как постоянно циклически проходить по набору данных и проверять, было ли данное свойство уже добавлено в структуру? Мой набор данных не упорядочен, что еще более затрудняет управление добавлениями через циклы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...