golang 使用tag转为struct对象,转出不使用Tag的方法

为社么这么做

服务端返回一串json给你:

{"aaa":"127.0.0.1","bbb":"80"}

aaa是什么意思 bbb又表示啥?

经过沟通

type Server struct {
    IP   string `json:"aaa"`
    Port int    `json:"bbb"`
}

这个时候你知道了他们表述的意思,然后你还需要将数据发送给前端使用,
当再次使用json.Marshal转为json后,依旧变成了

{"aaa":"127.0.0.1","bbb":"80"}

前端也会一样的问题,这发的是啥???

难道就不能不略Tag么???

golang当前的情况就是 确实没有办法忽略 无论是本身自带的库还是一些知名的第三方库都没有说忽略Tag的(嗯...也可能是我没找到)

在不忽略Tag的情况下如何实现

定义一个不同名但字段相同的Struct,
然后使用另一个struct做json处理

举例代码

package x

type Server struct {
    IP   string `json:"aaa"`
    Port int    `json:"bbb"`
}

type ServerX struct {
    IP   string
    Port int
}

func SurfaceJson(serArray []Server) []ServerX {
    serverXArray := make([]ServerX, 0)
    for i := range serArray {
        sx := ServerX(serArray[i]) // 此处转换
        serverXArray = append(serverXArray, sx)

        //serverXArray = append(serverXArray, ServerX(serArray[i]))
    }
    return serverXArray
}
```go




©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容