英文:
Go map[int]struct JSON Marshal
问题
尝试将map[int]解析为用户定义的结构体(struct)在Go语言中:
以下是数据模式:
type Recommendation struct {
Book int `json:"book"`
Score float64 `json:"score"`
}
以下是JSON编组(marshaling)的代码:
ureco := make(map[int]data.Recommendation)
ureco, _ = reco.UserRunner()
json, _ := json.Marshal(ureco)
fmt.Println(json)
其中reco.UserRunner()
返回适当的结构体类型。
这将打印一个空的JSON对象:
[]
更新:
错误信息:
json: unsupported type: map[int]data.Recommendation
那么如何将结构体的map转换为JSON?或者是否有其他方法可以实现?
英文:
Trying to parse a map[int] to user defined struct in go:
Here are the data schemas.
type Recommendation struct {
Book int `json:"book"`
Score float64 `json:"score"`
}
Here is the json marshaling:
ureco := make(map[int]data.Recommendation)
ureco, _ = reco.UserRunner()
json, _ := json.Marshal(ureco)
fmt.Println(json)
Where reco.UserRunner() returns the appropriate struct type.
This prints an empty json object:
[]
UPDATE:
error message:
json: unsupported type: map[int]data.Recommendation
So how do I json a map of structs? or is there an alternative approach?
答案1
得分: 5
如果你只需要编组它,你可以遍历你的映射并将其转换为切片。
slc := make([]data.Recommendation, 0)
for _, val := range ureco {
slc = append(slc, val)
}
json, _ := json.Marshal(slc)
你可以在这里看到一个使用 map[int]string
的简单示例:http://play.golang.org/
英文:
If you just need to marshal it, you could just iterate over your map and turn it into a slice.
slc := make([]data.Recommendation)
for _, val := range ureco {
slc = append(out, val)
}
json, _ := json.Marshal(slc)
You can see a simple example with a map[int]string
here: http://play.golang.org/
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论