我尝试使用encoding/jsonMarshal将 Go 地图转换为 json 字符串,但结果为空字符串。
encoding/json
这是我的代码:
package main import ( "encoding/json" "fmt" ) type Foo struct { Number int `json:"number"` Title string `json:"title"` } func main() { datas := make(map[int]Foo) for i := 0; i < 10; i++ { datas[i] = Foo{Number: 1, Title: "test"} } jsonString, _ := json.Marshal(datas) fmt.Println(datas) fmt.Println(jsonString) }
我的输出是:
map[9:{1 test} 2:{1 test} 7:{1 test} 3:{1 test} 4:{1 test} 5:{1 test} 6:{1 test} 8:{1 test} 0:{1 test} 1:{1 test}] []
我真的不知道我错在哪里。感谢您的帮助。
如果你发现了错误,你会看到这个:
jsonString, err := json.Marshal(datas) fmt.Println(err) // [] json: unsupported type: map[int]main.Foo
问题是你不能在 JSON 中使用整数作为键;这是被禁止的。相反,您可以预先将这些值转换为字符串,例如使用strconv.Itoa.
strconv.Itoa