gorm-cache icon indicating copy to clipboard operation
gorm-cache copied to clipboard

Json tag冲突的问题

Open FourLeafTec opened this issue 3 years ago • 3 comments

I believe that you can read Chinese without barriers, if you have any difficulty in understanding the following, please let me know

通常golang的习惯,json tag和gorm tag都会写在同一个struct里

我希望给用户交付的Json需要忽略某些字段的时候就会在struct里设置json:"-"的tag来忽略这个字段,但是同时这个字段又是要参与逻辑的,比如password,salt之类的

同时这个struct也是gorm要返回的,这时由于cache的序列化是基于encoding/json的,就会同时忽略json:"-"的字段,也就是逻辑判断字段会少内容

解决方案:我目前的做法是引入jsoniter来替换掉encoding/json,因为jsoniter允许指定tagkey,并且jsoniter号称性能也比encoding/json要快,询问一下这个变更是否适合合并入主线

FourLeafTec avatar Sep 23 '22 02:09 FourLeafTec

你说的这种case下,确实需要一个额外的tagkey。一个建议,gorm-cache是针对model层的存取,是属于底层的模型。如果要设置json:"-",代表你传递出去的json本身不完全代表一个model,而是更上一层的业务逻辑。这种情况下,我更建议你额外写一个struct,字段基本与model相同,去掉json:"-"的部分,然后将model各字段对应的值赋在这个新struct中,然后再encode成json传递出去。jsoniter这个,很抱歉我这边暂时没有时间支持,如果你有时间跟进的话我会review代码的,感谢支持!

Pacific73 avatar Sep 28 '22 03:09 Pacific73

这个库不维护了吗

a67793581 avatar Oct 30 '23 06:10 a67793581

@a67793581 4个月前还有提交bug修复,我这个问题也算比较特殊了,如果你需要这个特性可以在go.mod里添加

replace github.com/Pacific73/gorm-cache => github.com/FourLeafTec/gorm-cache v0.0.0-20220923024629-57146cb89040

PR合并前或者无法合并的话我这边的fork都会一直存在

FourLeafTec avatar Oct 30 '23 06:10 FourLeafTec