2016-04-18 120 views
1

我试图将地图[]转换为JSON,以便将其作为请求的一部分发布。但是我的地图[]有各种类型,包括字符串/整数。Golang - 将数组/地图转换为JSON

我目前有:

mapD := map[string]string{"deploy_status": "public", "status": "live", "version": 2} 
mapB, _ := json.Marshal(mapD) 
fmt.Println(string(mapB)) 

//output 
prog.go:17: cannot use 2 (type int) as type string in map value 

如何让这个我可以包括在同一地图中的字符串和整型?

感谢

回答

4

使用地图[字符串]接口{}:

mapD := map[string]interface{}{"deploy_status": "public", "status": "live", "version": 2} 

playground

+0

谢谢我在再次打开{}之前错过了{}} –

1

您要使用int类型的值作为一个字符串,但你的地图被定义为[string]string。您必须修改第一行:

mapD := map[string]string{"deploy_status": "public", "status": "live", "version": "2"} 

如果你不知道该值的类型,你可以使用interface{}代替。

+0

我可以整型不会改变为一个字符串,因为这将是无效的请求侧所以它必须留一个int 。 –

+0

如果我做接口版本: mapD:= map [string] interface {“deploy_status”:“public”,“status”:“live”,“version”:2} mapB,_:= json.Marshal (mapD) fmt.Println(string(mapB)) 我得到的错误:语法错误:意外的字符串文字 –

+0

是的,因为你没有正确初始化接口。你应该使用'map [string] interface { } {...}' –