У меня есть такой файл json:

{
    "ABEV3":
        [
            {"Date":"2014-01-02","Open":17.3,"Close":17.39,"Low":17.18,"High":17.5,"Volume":8035400},
            {"Date":"2014-01-03","Open":17.41,"Close":16.9,"Low":16.9,"High":17.44,"Volume":24920500},
            {"Date":"2014-01-06","Open":16.95,"Close":16.8,"Low":16.55,"High":17.09,"Volume":9355100}
        ],
    "PETR4":
        [
            {"Date":"2014-01-02","Open":20.3,"Close":21.39,"Low":21.18,"High":21.5,"Volume":305464},
            {"Date":"2014-01-03","Open":20.41,"Close":21.9,"Low":21.9,"High":21.44,"Volume":10864},
            {"Date":"2014-01-06","Open":20.95,"Close":21.8,"Low":16.21,"High":21.09,"Volume":2016}
        ]
}
    

Я пытаюсь использовать приведенный ниже код для чтения этого JSON, но, конечно, это не работает, потому что я не знаю, как заставить строковый ключ (ABEV3, PETR4 ...) работать вместе с приведенным ниже кодом! Я придумал map[string]map[int]estrutura_da, но он по какой-то причине не работает

    type estrutura_da struct {
        Date string
        Low float64
        High float64
        Open float64
        Close float64
        Volume int
    }       

    var da map[string]map[int]estrutura_da;
    
    json.Unmarshal([]byte(json_code),&da);

Есть ли у вас какие-нибудь предложения, как мне это сделать?

go
0
Samul 9 Окт 2020 в 02:07

1 ответ

Лучший ответ

Вместо того, чтобы использовать map[string]map[int]estrutura_da, вы должны использовать map[string][]estrutura_da.

Это потому, что у вас есть объект JSON (внешние скобки), где каждый ключ представляет собой массив объектов. Это соответствует карте Go, где каждое значение является частью estruntura_da.

1
Peter Stace 8 Окт 2020 в 23:16