Java SpringBoot2.0 接收 JSON 参数问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LinsVert
V2EX    问与答

Java SpringBoot2.0 接收 JSON 参数问题

  •  
  •   LinsVert 2022-01-06 13:30:37 +08:00 1592 次点击
    这是一个创建于 1373 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位 V2 大佬在使用SpringBoot接受 JSON 参数时,是不是都得用个实例对象去接受这个参数;

    比如 @RequestBody Example example 这样的形式,这就很僵硬,如果用 @RequestBody Map<String, Object> example 可读性又太差,有没有一种方式能接受 JSON 参数,可以直接在 Controller 里直接写明参数的方法?比如 public void abc(Integer abc) 这样的形式的。

    不胜感激~

    6 条回复    2022-01-06 17:19:24 +08:00
    yangyaofei
        1
    yangyaofei  
       2022-01-06 13:46:25 +08:00   1
    1. 没有
    2. 不应该这么用
    3. 实体类直接交给 service 处理对应业务就行了, controller 不应该在这里处理东西
    4. 确实会有只需要实体类中的部分值进行某个业务的(如创建), 这个地方有一些解决方案,比如持久化的和前台的不是一个,一对多,再转换. 持久化类进行继承(有弊端也有好处)
    constantine008
        2
    constantine008  
       2022-01-06 14:06:21 +08:00
    换个思路 OpenAPI+swagger
    mango88
        3
    mango88  
       2022-01-06 15:43:55 +08:00
    为啥会觉得僵硬呀 ?


    可以定制个参数解析器,关键词: HandlerMethodArgumentResolver

    解析 JSON 值,再赋值到方法里其他参数上
    gadfly3173
        4
    gadfly3173  
       2022-01-06 17:06:49 +08:00
    参数不多且不是必须用 post/put 之类的情况下,用 get 解析 request param 也可以
    LinsVert
        5
    LinsVert  
    OP
       2022-01-06 17:14:16 +08:00
    @mango88 好的谢谢~
    clf
        6
    clf  
       2022-01-06 17:19:24 +08:00
    所以就是没写方法的注释?

    如#3 所说的那样,你可以自定义一个 Resolver ,然后在初始化的时候替换掉默认的 Resolver 。

    @RequestBody 对应的是 RequestResponseBodyMethodProcessor ,可以参考一下。

    然后弄个类继承 WebMvcConfigurer ,重写 addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers)方法,里面 add 你的 resolver 就行了。类上 @Configuration @EnableWebMvc 注解。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3004 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 13:30 PVG 21:30 LAX 06:30 JFK 09:30
    Do have faith in what you're doing.
    ubao 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