2013-09-24 55 views
1

领域我得到所有用户的数组与他们的文档中的属性ID:Golang选择从结构阵列

Users := []backend.User{} 

err := Collection.Find(bson.M{"channel_id": bson.ObjectIdHex(chId)}).All(&Users) 
if err != nil { 
    println(err) 
} 

,我想送一个JSON响应返回给浏览器/客户端。但是,用户结构包含我不想发回的ID和Hahsed密码之类的内容!

我正在看像使用反射包来选择结构的字段,然后把它们放入一个映射[字符串]接口{},但我不知道如何用一组用户来做到这一点。

回答

1

您可以忽略结构字段,而json.Marshal。在播放Golang

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)) 
} 

Runnable的例子:http://play.golang.org/p/AEC_TyXE3B

有关于在doc using the tags一个非常有用的部分。与XML相同,但由于显而易见的原因它更复杂。