golang 中利用 map 动态向 json 添加字段

目前在做一个微型网关,一期的功能就是接收请求、匹配路由、鉴权、转发请求,再把响应接住并动态添加字段最后返回给调用方。

简单来说就是把请求方的响应接住,并在外层加上网关层特有的字段,如下

{
	"response": {
		"data":[],
		"traceId":"1212121212112"
	}
}

其中 response 和 traceId 就是网关动态加的,这个可以利用 golang 里的 map 属性来实现。

ret  := map[string]interface{}{}
data := map[string]interface{}{}

首先,定义两个 map 变量,其中 ret 是外层的 map,data 则是内层具体的 map。

content, _ := ioutil.ReadAll(res.Body)
json.Unmarshal([]byte(content), &data)

其次,使用 data 接住 json.Unmarshal 解析返回的 json 串。

data["traceId"] = "1212121212112"
ret["response"] = data
str, _          = json.Marshal(ret)

w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, string(str))

最后,动态添加 traceId 和 response 字段并转成 json 字符串返回给调用方。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值