有没有相关 JSON 注解,可以在数据返回前端时,把以分为单位的金额数字转换成以元为单位的字符串 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
voidxx
V2EX    Java

有没有相关 JSON 注解,可以在数据返回前端时,把以分为单位的金额数字转换成以元为单位的字符串

  •  
  •   voidxx 2020 年 6 月 3 日 2816 次点击
    这是一个创建于 2153 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT

    后端定义

    { @ApiModelProperty(name = "转账金额,单位(分)") private Long transAmount; @ApiModelProperty(name = "退款金额,单位(分)") private Long refundAmount; } 

    因为需要做金额的统计,所以数据库设计成了 bigint 类型,以分为单位,查询出来用 Long 接收

    有没有相关 JSON 注解,可以把以分为单位的金额数字转换成以元为单位的字符串,返回给前端。

    如:888(分) -> 8.88 (元)

    10 条回复    2020-06-04 14:06:00 +08:00
    virusdefender
        1
    virusdefender  
       2020 年 6 月 3 日
    前端处理小数可能也会遇到精确度的问题,不如还是用分为单位
    voidxx
        2
    voidxx  
    OP
       2020 年 6 月 3 日
    @virusdefender #1 后端已转成 String 了,前端一样用 String 接收就好了
    TtTtTtT
        3
    TtTtTtT  
       2020 年 6 月 3 日
    推荐加一个新的只读字段来序列化,这样不会影响模型的反序列化。

    如果觉得麻烦的话,可以加一个自定义的序列化器。

    https://fasterxml.github.io/jackson-databind/javadoc/2.7/com/fasterxml/jackson/databind/annotation/JsonSerialize.html
    voidxx
        4
    voidxx  
    OP
       2020 年 6 月 3 日
    @TtTtTtT #3 多谢。
    现在是另外加了一个字段来做的,在代码里自己转。
    guyeu
        5
    guyeu  
       2020 年 6 月 3 日
    你应该自定义自己的金额类,然后给这个金额类添加一个自定义的序列化器,常见的 json 库都支持自定义序列化器。
    k9990009
        6
    k9990009  
       2020 年 6 月 3 日 via Android
    有的,之前写过处理小数保留的位数,你找下这个,单独写个类自己处理输出
    axbx
        7
    axbx  
       2020 年 6 月 4 日
    自定义注解,返回的时候修改一下不就行了
    ruyu
        8
    ruyu  
       2020 年 6 月 4 日
    用 xml

    <transAmount type="currency">10</transAmount>
    <refundAmount type="currency">20</transAmount>

    然后通过 type 判断就好啦
    Aresxue
        9
    Aresxue  
       2020 年 6 月 4 日
    你这种情况前后之间交互就应该用分,这样只需要使用整数,然后让前端自己转就好了
    Cinleoi
        10
    Cinleoi  
       2020 年 6 月 4 日
    加一个 DTO 不就行了吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2860 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 12:45 PVG 20:45 LAX 05:45 JFK 08:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86