我正在使用Gin创建一个REST API.我try 创建的响应是一个键值json映射,如下所示:
"content": {
"1.4.5.": {
"id": "1.4.5.",
"content": "some content",
"title": "title"
},
"1.4.6.": {
"id": "1.4.6.",
"content": "another content",
"title": "another title"
},
我使用的数据模型是:
type TopicBundle struct {
...
Content map[string]Topic `json:"content"`
}
并使用以下命令正确地将其序列化为JSON:
c.JSON(200, topicBundle)
差不多了.
Map[字符串]主题永远不会以正确的顺序获取其值.我从一个已排序的 map 创建它.但这无济于事.
var contentMap = make(map[string]Topic, sm.Len())
for _, key := range sm.Keys() {
contentMap[key.(string)] = first(sm.Get(key)).(Topic)
}
在某些时候,这张 map 似乎是重新创建的,键的顺序会稍微改变. 我想不出任何其他的替代方案,因为Gin似乎只正确地序列化了这个原始的键值映射.来自github.com/umpc/go-sortedmap的排序映射根本没有序列化.
那么,如何在这个原始(原生?) struct 中保持键的顺序呢?或者我应该为Gin编写一个定制的串行化程序?
我试图在互联网上找到解决方案.