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

GIN框架:自定义结构体到出JSON格式

先自定义结构体的赋值以及到出
在 Go 语言中,json:"errorMsg" 是一个 struct tag,用于定义结构体字段在被序列化成 JSON 格式时的名称。如果你在定义结构体字段时添加了这个 tag,那么在将结构体实例序列化为 JSON 格式时,该字段将以 “errorMsg” 作为键名;而不添加这个 tag,则默认会使用字段名作为键名。

举个例子,假设有以下结构体定义:

type Response struct {
    ErrorCode string      `json:"errorCode"`
    ErrorMsg  string      `json:"errorMsg"`
    Data      interface{} `json:"data"`
}

如果你创建了一个 Response 实例并将其序列化成 JSON 格式,结果可能如下:

{
    "errorCode": "1001",
    "errorMsg": "Something went wrong",
    "data": {...}
}

可以看到,由于添加了 json:"errorMsg" tag,ErrorMsg 字段被序列化为 JSON 时的键名为
“errorMsg”。

package API

type ApiResponseObject struct {
	ErrorCode string      `json:"errorCode"`
	ErrorMsg  string      `json:"errorMsg"`
	Data      interface{} `json:"data"`
}

func (response *ApiResponseObject) GetErrorCode() string {
	return response.ErrorCode
}

func (response *ApiResponseObject) SetErrorCode(errorCode string) {
	response.ErrorCode = errorCode
}

func (response *ApiResponseObject) GetErrorMsg() string {
	return response.ErrorMsg
}

func (response *ApiResponseObject) SetErrorMsg(errorMsg string) {
	response.ErrorMsg = errorMsg
}

func (response *ApiResponseObject) GetData() interface{} {
	return response.Data
}

func (response *ApiResponseObject) SetData(data interface{}) {
	response.Data = data
}

集合导出方法

package services

import API "awesomeProject4/common"

func ReponseJSON(errorCode string, errorMsg string, resData interface{}) API.ApiResponseObject {

	apiResponseObject := API.ApiResponseObject{}
	apiResponseObject.SetData(resData)
	apiResponseObject.SetErrorMsg(errorMsg)
	apiResponseObject.SetErrorCode(errorCode)
	
	return apiResponseObject
}

使用如果不引如 json:"键名"会到出ctx.json输出为空

ctx.JSON(http.StatusOK, ReponseJSON(API.SUCCESS.GetCode(), API.SUCCESS.GetName(), user))

http://www.kler.cn/news/136492.html

相关文章:

  • 鸿蒙next之导航组件跳转携带参数
  • Go 语言中的 GOMAXPROCS
  • C++ (7) 内存管理:掌握魔法能量的流动
  • 七,Linux基础环境搭建(CentOS7)- 安装Scala和Spark
  • 分页列表缓存
  • 2024-09学习笔记
  • 雪花算法的使用
  • 抖音电商双11官方数据最全汇总!
  • 【c++】前缀和教程
  • 微创机器人:CRM撬动售后服务数字化升级
  • 代码随想录算法训练营第23期day59|503.下一个更大元素II、42. 接雨水
  • 【前端学java】java中final修饰符(5)
  • Thales全方位企业数据防泄漏解决方案
  • 第十一章 将对象映射到 XML - 控制流属性的映射形式
  • 一道简单的无穷级数题目
  • 相似基因序列问题 ——查找
  • 算法-简单-二叉树-翻转、对称
  • golang学习笔记——日志记录
  • [Spring Cloud] Nacos 实战 + Aws云服务器
  • 贪吃蛇游戏制作
  • CentOS7安装Docker遇到的问题笔记
  • redhat下使用CentOS yum源,并安装docker
  • 【JavaEE初阶】 CSS相关属性,元素显示模式,盒模型,弹性布局,Chrome 调试工具||相关讲解
  • vue3-响应式核心
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • 如何在公网环境下使用内网穿透工具实现用ipad pro进行代码开发