为社么这么做
服务端返回一串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