duanbi3151 2017-11-06 04:59
浏览 10
已采纳

如何在Golang中声明地图列表

i am not getting how should i format the struct in golang so that i can get the list of maps (key/value pairs) in JSON format ? So far i tried with this

package main

import (
"encoding/json"
"fmt"
)

func main() {
map1 := map[string]interface{}{"dn": "abc", "status": "live", "version": 2, "xyz": 3}
map2, _ := json.Marshal(map1)
fmt.Println(string(map2))
}

here it is just printing key/value pairs...

{"dn":"abc","status":"live","version":2,"xyz":3}

but i need output something like this :

[{"dn":"abc","status":"live"},{"version":2,"xyz":3}]

  • 写回答

1条回答 默认 最新

  • donglu3184 2017-11-06 10:01
    关注

    As suggested by @Volker, you should use slice of maps:

    package main
    
    import (
        "fmt"
        "encoding/json"
    )
    
    // M is an alias for map[string]interface{}
    type M map[string]interface{}
    
    func main() {
        var myMapSlice []M
    
        m1 := M{"dn": "abc", "status": "live"}
    
        m2 := M{"version": 2, "xyz": 3}
    
        myMapSlice = append(myMapSlice, m1, m2)
    
        // or you could use `json.Marshal(myMapSlice)` if you want
        myJson, _ := json.MarshalIndent(myMapSlice, "", "    ")
        fmt.Println(string(myJson))
    }
    

    Outputs:

    [
        {
            "dn": "abc",
            "status": "live"
        },
        {
            "version": 2,
            "xyz": 3
        }
    ]
    

    From the code, I've used an alias for map[string]interface{} to make it more convenient to initialize a map of interface.

    Link to code: https://play.golang.org/p/gu3xafnAyG

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看