当前位置: 首页 > 面试题库 >

验证结构字段(如果存在)

陈实
2023-03-14
问题内容

我正在将JSON用户对象发布到我的Golang应用程序中,在其中我将“ req.body”解码为“ User”结构。

err := json.NewDecoder(req.Body).Decode(user)
//handle err if there is one

和“用户”结构:

type User struct {
    Name      string  `json:"name,omitempty"`
    Username  string  `json:"username,omitempty"`
    Email     string  `json:"email,omitempty"`
    Town      string  `json:"town,omitempty"`
    //more fields here
}

虽然我不需要实际验证方面的帮助,但我想知道如何仅在用户名作为JSON对象的一部分包含时验证用户名。目前,如果不包含用户名,则该用户名User.Username仍然存在,但为空,即""

如何检查是否已将“用户名”作为POSTed对象的一部分?


问题答案:

您可以使用指向字符串的指针:

type User struct {
    Name     string  `json:"name,omitempty"`
    Username *string `json:"username,omitempty"`
    Email    string  `json:"email,omitempty"`
    Town     string  `json:"town,omitempty"`
    //more fields here
}

func main() {
    var u, u2 User
    json.Unmarshal([]byte(`{"username":"hi"}`), &u)
    fmt.Println("username set:", u.Username != nil, *u.Username)
    json.Unmarshal([]byte(`{}`), &u2)
    fmt.Println("username set:", u2.Username != nil)
    fmt.Println("Hello, playground")
}

playground



 类似资料:
  • 数据库字段约束 模型验证允许你为模型的每个属性指定格式/内容/继承验证. 验证会自动运行在create,update和save上. 你也可以调用validate()手动验证一个实例. class ValidateMe extends Model {} ValidateMe.init({ bar: { type: Sequelize.STRING, valid

  • 问题内容: 我正在使用JPA 2.0 /hibernate验证来验证我的模型。我现在遇到一种情况,必须验证两个字段的组合: 该模型是无效的,如果都和都null和其他有效。 如何使用JPA 2.0 / Hibernate执行这种验证?使用简单的注释,两个吸气剂都必须为非null才能通过验证。 问题答案: 对于多属性验证,应使用类级别的约束。摘自 Bean Validation Sneak Peek第

  • 我试图使用Oval1.84来绕过一些没有样板的验证约束。当我用@NotNull(javax.validation.constraint和net.sf.oval.validator)标记字段时,验证就可以工作了。 但在对方法和构造函数参数实现constarints的情况下不起作用。

  • 我正在尝试从下面的查询收集表格中获取数据: 但如果$match的集合中存在datat,则会导致空数据,但此slug的job\u活动不存在 有人能帮忙吗谢谢

  • 我有以下请求json 我试图验证这个json,我的要求是,如果ParameterB存在,那么里面肯定会有一个列表shd存在,否则ParameterB是可选的。例如,如果ParameterB本身只是不存在,那么shd不是一个问题。 我正在寻找相同的java验证注释。我在key和value上使用了@NotNull,但不能决定在ParameterB上使用什么,因为它是list所在的数组 我在Parame

  • 作用 验证给定字符串是否满足指定条件,一般用在表单字段验证里。 此类中全部为静态方法。 使用 判断验证 直接调用Validator.isXXX(String value)既可验证字段,返回是否通过验证。 例如: boolean isEmail = Validator.isEmail("loolly@gmail.com") 表示验证给定字符串是否复合电子邮件格式。 其他验证信息请参阅Validat