I have some JSON that looks like this:
{
"ABC": {"symbol": "abc", "open": 42},
"DEF": {"symbol": "abc", "open": 42},
"GHI": {"symbol": "abc", "open": 42}
}
And I don't need the ABC/DEF/GHI part, only the part on the right. The values of ABC, DEF, and GHI are of type entity.Day
in my code, which looks something like this:
type Day struct {
Symbol string `json:"symbol" sql:"symbol"`
Date time.Time `json:"date" sql:"date"`
OpenP float64 `json:"open" sql:"open"`
HighP float64 `json:"high" sql:"high"`
LowP float64 `json:"low" sql:"low"`
CloseP float64 `json:"close" sql:"close"`
VolumeP float64 `json:"volume" sql:"volume"`
Label string `json:"label" sql:"-"`
ChangeOverTime float64 `json:"changeOverTime" sql:"change_over_time"`
UnadjustedVolume float64 `json:"unadjustedVolume" sql:"unadjusted_volume"`
Change float64 `json:"change" sql:"change"`
ChangePercent float64 `json:"changePercent" sql:"change_percent"`
VWAP float64 `json:"vwap" sql:"vwap"`
}
There are other endpoints that produce entity.Day
s, however this is the only one that's structured like this. How can I unmarshal the JSON into, ideally, an array of entity.Day
s?
My first thought was to make an intermediate data structure:
type previous struct {
tckrs map[string]entity.Day
}
p := previous{tckrs: make(map[string]entity.Day)}
json.Unmarshal(res, &p)
That code produces an empty struct and json.Unmarshal
returns a nil error. Can you help me?
PS - I searched around quite a bit and I found similar answers and lots of other people trying the map
approach, although that did not work for me.