场景:考虑我在去朗现在我要处理的JSON数据现在用map[string]interface{}使用的封装类型encoding/json做marshal/unmarshal以下是 JSON 数据:{ "MysoreCity": { "Population": 1000, "VehicleCount": 1700, "Temperature": 33 }, "BangaloreCity": { "Population": 1000, "VehicleCount": 3500, "Temperature": 33 }, "KolarCity": { "Population": 1250, "VehicleCount": 3500, "Temperature": 31 }, "TumkurCity": { "Population": 800, "VehicleCount": 300, "Temperature": 29 }}现在我想根据优先级执行多排序降序,比如优先级是Temperature, Population,VehicleCount然后我希望输出像{ "BangaloreCity": { "Population": 1000, "VehicleCount": 3500, "Temperature": 33 }, "MysoreCity": { "Population": 1000, "VehicleCount": 1700, "Temperature": 33 }, "KolarCity": { "Population": 1250, "VehicleCount": 3500, "Temperature": 31 }, "TumkurCity": { "Population": 800, "VehicleCount": 300, "Temperature": 29 }}因此,根据一些动态的优先级集进行排序。问题:我没有得到任何关于如何在 go lang 中对其进行排序的线索。我是 lang 新手,在搜索对我的数据进行排序时发现了一些东西;如下所述(来源:链接)使用范围循环遍历地图时,未指定迭代顺序,并且不能保证从一次迭代到下一次迭代顺序相同。问题:谁能解释一下如何使用类似的 JSON 数据进行这种排序?
2 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
我做了这个函数从 N 个映射和它的排序键中获取结果映射。
func getSortedKeys(maps ...map[string]string) (map[string]string, []string) {
var keys []string
resultMap := map[string]string{}
for _, currMap := range maps {
for k, v := range currMap {
resultMap[k] = v
keys = append(keys, k)
}
}
sort.Strings(keys)
return resultMap, keys
}
在函数之外,您可以执行以下操作:
concatenedMaps, keys := getSortedKeys(map1,map2)
for _, k := range keys {
value := concatenedMaps[k]
}
- 2 回答
- 0 关注
- 436 浏览
添加回答
举报
0/150
提交
取消