golang断言:一个蛋疼的处理场景
这一切都来源于一个蛋疼的需求场景处理:
因为历史原因,一个需要用到的JSON数据被整个缓存进Redis的一个key中,大概如下:
1 | 127.0.0.1:6379> get dt |
这里还是做了脱敏处理,实际的情形JSON的层级更深…
格式化显示的JSON结构大概是这样:
1 | { |
现在要做的是: address 里的每个元素的 url 字段需要更新。
现在知道的是:address 的值 是一个数组,数组的每个元素是一个map[string]interface{} 类型,map里的元素除了 “url”: “xxx.mp4”, 其他的数量不确定
实现代码大概如下(方便展示,省略了Redis读写的步骤):
1 | detailByte := []byte(`{"address":[{"duration":90,"format":"mp4","url":"xxx.mp4","ext":"{\"key\":\"val\"}"},{"duration":90,"format":"mp4","url":"xxx.mp4","ext":"{\"key\":\"val\"}"}],"value":"web"}`) |
运行结果:
1 | before: { |
怎么说呢,实现了感觉又没有真正实现…
哎,蛋疼。