如何在对象具有字符串键的Golang中解组JSON

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.Days, however this is the only one that's structured like this. How can I unmarshal the JSON into, ideally, an array of entity.Days?

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.

The type previous you defined would require your JSON to represent an object with one top level field containing the map.

Since your JSON models a map directly, you can use a map to unmarshal it.

Try just:

p := make(map[string]Day)
json.Unmarshal(res, &p)