我得到了所有用户的数组,在他们的文档中有一个属性 ID:
Users := []backend.User{}
err := Collection.Find(bson.M{"channel_id": bson.ObjectIdHex(chId)}).All(&Users)
if err != nil {
println(err)
}
我想将其作为 JSON 响应发送回浏览器/客户端。但是,User 结构包含 ID 和 Hahsed 密码之类的东西,我不想发回!
我正在寻找类似使用反射包来选择结构的字段然后将它们放入 map[string]interface{} 中的方法,但我不确定如何对一组用户执行此操作。
最佳答案
您可以在 json.Marshal
时忽略结构字段。
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Id int `json:"-"`
Name string `json:"name"`
}
type Users []*User
func main() {
user := &Users{
&User{1, "Max"},
&User{2, "Alice"},
&User{3, "Dan"},
}
json, _ := json.Marshal(user)
fmt.Println(string(json))
}
Play Golang 中的可运行示例:http://play.golang.org/p/AEC_TyXE3B
关于using the tags 有一个非常有用的部分在文档中。同样适用于 XML ,但由于显而易见的原因,它更复杂。
关于mongodb - Golang 从结构数组中选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18988256/