Turns out it was easiest to just provide an additional property in the Item struct for GORM to unmarshal into byte and then unmarshal the byte array as the sub-struct:
// Item is a thing.. type Item Stats byte `gorm:"column:stats" json:"stats"` StatsList ItemInfo `json:"iteminfo"` }
And unmarshal it like this:
err = json.Unmarshal(returnedItem.Stats, &returnedItem.StatsList)
Thanks to @evanmcdonnal for the suggestion.