当前位置: 首页 > news >正文

第十二:josn 传递参数 shouldBindJSON 和结构体的 db字段

链接: Golang教程三(结构体、自定义数据类型,接口)_golang 自定义数据类型-CSDN博客

结构体指向 json 和数据库的 db

type User struct {
    ID   int    `json:"id" db:"user_id"`
    Name string `json:"name" db:"user_name"`
}

// db:"id" 表示 ID 字段对应数据库中的 "id" 字段。
// sql:",notnull" 指定 Name 字段在数据库中不允许为 NULL。

type User struct {
    ID   int    `db:"id"`
    Name string `sql:",notnull"`
}

// json:"id" 指定了在JSON中,ID 字段映射为 "id";
// json:"name,omitempty" 表示在序列化时,如果 Name 字段值为空,则不包含该字段;

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name,omitempty"`
}

package main
 
import (
	"fmt"
	"reflect"
)
 
type User struct {
	ID   int    `json:"id" db:"user_id"`
	Name string `json:"name" db:"user_name"`
}
 
func main() {
	// 创建一个User实例
	u := User{ID: 1, Name: "Alice"}
 
	// 获取User类型反射值
	userValue := reflect.ValueOf(u)
	userType := userValue.Type()
 
	// 遍历User的字段
	for i := 0; i < userType.NumField(); i++ {
		field := userType.Field(i)
 
		// 获取字段名
		fieldName := field.Name
		fmt.Printf("Field Name: %s\n", fieldName)
 
		// 获取字段标签(假设我们关心的是json和db标签)
		jsonTag := field.Tag.Get("json")
		dbTag := field.Tag.Get("db")
 
		fmt.Printf("json Tag: %s\n", jsonTag)
		fmt.Printf("db Tag: %s\n", dbTag)
 
		// 输出标签值或默认值(如果不存在)
		if jsonTag != "" {
			fmt.Printf("JSON mapping: %s -> %s\n", fieldName, jsonTag)
		} else {
			fmt.Printf("No JSON tag for field %s\n", fieldName)
		}
 
		if dbTag != "" {
			fmt.Printf("DB mapping: %s -> %s\n", fieldName, dbTag)
		} else {
			fmt.Printf("No DB tag for field %s\n", fieldName)
		}
 
		fmt.Println()
	}
}

相关文章:

  • QML入门开发3-QML基本语法和如何查看帮助文档
  • 机器人原点丢失后找回原点的解决方案与步骤
  • 操作系统 2.12-死锁处理
  • 用免费的github的key调用gpt实现一个简单的rag自动打分评测系统,不用任何框架
  • [计算机三级网络技术]第七章:路由器配置及使用
  • 2025年移动端开发性能优化实践与趋势分析
  • 一文详解redis
  • 【从零实现Json-Rpc框架】- 第三方库介绍 - jsoncpp篇
  • Apache Dubbo 与 ZooKeeper 集成:服务注册与发现的全解析
  • 复杂任务需要多agent协同处理,对其进行逻辑编排和参数调用
  • JVM 02
  • HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
  • 【leetcode hot 100 20】有效的括号
  • uniapp动态循环表单校验失败:初始值校验
  • 【学习资源】多元时序分析问题和时序图模型
  • 【机器学习】建模流程
  • uniapp笔记-swiper组件实现轮播图
  • Unicode代码点与编码
  • 好消息!软航文档控件(NTKO WebOffice)在Chrome 133版本上提示扩展已停用的解决方案
  • 【虚拟环境配置】地信从0开始的环境配置小白教程
  • 证监会发布上市公司信披豁免规定:明确两类豁免范围、规定三种豁免方式
  • 欢迎回家!日本和歌山县4只大熊猫将于6月底送返中国
  • 五矿地产:今年要确保债务“不爆雷”、交付“不烂尾”
  • 技术派|“会飞的手榴弹”:微型无人机将深刻改变单兵作战方式
  • 吉林建筑大学党委原书记崔征接受纪律审查和监察调查
  • 大理洱源4.8级地震致442户房屋受损,无人员伤亡