我正在尝试将地图转换为JSON字符串。但我的下面的代码似乎产生了一系列数字。
这是我的main.go
package main
import (
"encoding/json"
"log"
)
type column struct {
field string
fieldType string
}
type tblSchema struct {
tbl string
columns map[string]column
}
func main() {
mapper := make(map[string]tblSchema)
columns := make(map[string]column)
columns["first"] = column{field:"user_id",fieldType:"int(11)"}
mapper["t_user"] = tblSchema{tbl:"t_user",columns:columns}
jsonString, _ := json.Marshal(mapper)
log.Println(jsonString)
//log.Println(mapper)
}
这会产生以下输出
[123 34 116 95 117 115 101 114 34 58 123 125 125]
如果我取消注释log.Println(mapper)
,我会
map[t_user:{t_user map[first:{user_id int(11)}]}]
我做错了什么?我希望jsonString具有以下格式
{
"t_user":{
"tbl":"t_user",
"columns":{
"first":{
"field":"user_id",
"fieldType":"int(11)"
}
}
}
答案 0 :(得分:3)
func Marshal(v interface{}) ([]byte, error)
返回[]byte
,因此您需要将其转换为string
:
log.Println(string(jsonString))
修改
这将产生所需的结果
package main
import (
"encoding/json"
"log"
)
type Column struct {
Field string
FieldType string
}
type TblSchema struct {
Tbl string
Columns map[string]Column
}
func main() {
mapper := make(map[string]TblSchema)
columns := make(map[string]Column)
columns["first"] = Column{Field:"user_id",FieldType:"int(11)"}
mapper["t_user"] = TblSchema{Tbl:"t_user",Columns:columns}
jsonString, _ := json.Marshal(mapper)
log.Println(string(jsonString))
log.Println(mapper)
}