Golang从结构数组中选择字段

时间:2013-09-24 17:30:47

标签: mongodb go

我在其文档中获得了一个具有属性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 {}之类的内容,但我不知道如何使用一组用户来完成它。

1 个答案:

答案 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也是如此,但由于显而易见的原因,它更复杂。