"data"

但是,Go中的地图被实现为由一组唯一键索引的无序元素组。因此,基本上没有办法确保Go中地图的顺序,因此您必须将地图中的数据传输到可以排序的内容中,例如切片。

sort

您可以先声明所需的类型:

type DataItem struct {
    Key    string     `json:"-"`
    Fields DataFields `json:"fields"`
}

type DataFields struct {
    Name     string `json:"name"`
    FavColor string `json:"fav_color"`
    Address  string `json:"address"`
}

然后解组json

var obj struct {
    TestCode  int                  `json:"testCode"`
    ReplyTest string               `json:"replyTest"`
    Data      map[string]*DataItem `json:"data"`
}
if err := json.Unmarshal(data, &obj); err != nil {
    panic(err)
}

将地图内容转移到切片中

items := []*DataItem{}
for key, item := range obj.Data {
    item.Key = key // keep track of the key because it will be used to order the contents of the slice
    items = append(items, item)
}

最后对切片进行排序

sort.Slice(items, func(i, j int) bool {
    return items[i].Key < items[j].Key
})