• 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"`
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    {
        "errorCode": "1001",
        "errorMsg": "Something went wrong",
        "data": {...}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可以看到,由于添加了 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
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    集合导出方法

    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
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

    ctx.JSON(http.StatusOK, ReponseJSON(API.SUCCESS.GetCode(), API.SUCCESS.GetName(), user))
    
    • 1
  • 相关阅读:
    高并发+海量数据下如何实现系统解耦?【下】
    HTTPS加密流程
    STM32实现PMBus从机程序
    go语言 | 图解反射(一)
    macOS 安装brew
    联邦学习:联邦场景下的域泛化
    C语言 指针进阶 贰
    【LeetCode热题100】【链表】排序链表
    Android12 禁用adb
    java 集合转换、查找、过滤、分割
  • 原文地址:https://blog.csdn.net/qq_45083002/article/details/134524864