将 map 转换为 json 在 golang 中给出了很多整数
converting map to json gives a lot of integers in golang
我正在尝试将地图转换为 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)"
}
}
}
func Marshal(v interface{}) ([]byte, error)
returns []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)
}
我正在尝试将地图转换为 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)"
}
}
}
func Marshal(v interface{}) ([]byte, error)
returns []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)
}