mongodb - Golang 从结构数组中选择字段

标签 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 密码之类的东西,我不想发回!

我正在寻找类似使用反射包来选择结构的字段然后将它们放入 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/

相关文章:

javascript - 在 OpenShift Gear 上运行 MongoDB 脚本时出错

PHP 不会与 MongoDB 驱动程序一起编译

node.js - 如何获取 Mongoose 数组中最后一个元素的数据?

testing - 在仅适用于某些版本的 golang 中运行测试

elasticsearch - 在 Golang 中使用 Elasticsearch scriptfield

node.js - 如何在mongodb中获取特定月份的日记录?

javascript - MongoDB 聚合总是返回 0 值

rest - 无法使用golang中的gorilla mux从url读取变量

go - 如何在将 float 转换为 int 时四舍五入到最近的 int

arrays - 大小来自用户输入的数组