我在其文档中获得了一个具有属性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 Passwords之类的东西,我不想发回去!
我正在寻找类似于使用reflect包来选择结构的字段然后将它们放入map [string] interface {}之类的内容,但我不知道如何使用一组用户来完成它。
答案 0 :(得分:1)
您可以在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中的Runnable示例:http://play.golang.org/p/AEC_TyXE3B
文档中有using the tags非常有用的部分。 XML也是如此,但由于显而易见的原因,它更复杂。