我有一个应用程序,可以在数据库中创建用户并返回其信息(带有struct)。而且我想将用户模型发送给客户端(Web服务器的响应),而无需输入密码(或者我不希望客户端获得的更多信息)。 正确的方法是什么?使“ UIUser”结构与我要发送客户端的唯一字段并将原始模型转换为此结构?或用户界面?
当然,如果可以举个例子解决这个问题。
答案 0 :(得分:5)
通常,拥有视图结构可能是一个好主意,因为您不想将API格式与内部表示形式耦合。无论如何,如果您只是想以一种懒惰的方式这样做并且避免序列化密码,则可以始终使用-
json struct标签:
package main
import (
"fmt"
"encoding/json"
"log"
)
type user struct {
ID int `json:"id"`
Name string `json:"name"`
Pass string `json:"-"`
}
func main() {
u := &user{123, "John", "supersecret"}
b, err := json.Marshal(u)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(b))
}
答案 1 :(得分:2)
我已经看到了一些按照您的描述进行操作的示例。具有所需数据和两个结构之间的转换函数的不同结构。根据您的应用程序,也可以将字段设置为私有或公共。例如,golang的Json或Yaml解析器仅填充结构的公共字段。
如果您是来自OOP的背景知识,则可以随时将Getter-Setter方法写入结构。
最简单的方法似乎就是您在问题中所写的方法。