V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cnit
V2EX  ›  Java

Java 如何根据数据库配置动态返回 DTO

  •  
  •   cnit · 2022-01-27 09:51:03 +08:00 · 2828 次点击
    这是一个创建于 1058 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是在前端配置好字段映射或者序列化字后,不同的调用者返回的字段 key 是不样的,或者不序列化该字段。 就跟动态 JSONField 注解一样,我也找到了一篇动态注解的东西,可以加上但是注解加上之后删不掉改不了。

    后面我的实现方式是通过 Fastjson 的 NameFilter 跟 PropertyPreFilter 来实现的,但是这个需要 toJSONString(), 然后再 parseObject(). 感觉有点不太优雅,有没有做过类似需求分享一下实现思路?

    给大家先拜个早年了

     public class MyModel {
    
        private String name; // request A : name1 request B :name2
    
        private MyAddress address;
    
        private List<MyAddress> items;
    
     }
    
    7 条回复    2022-01-28 22:48:03 +08:00
    lslvxy
        1
    lslvxy  
       2022-01-27 10:00:49 +08:00
    GraphQL
    shanch
        2
    shanch  
       2022-01-27 10:42:18 +08:00
    动态搭理
    chihiro2014
        3
    chihiro2014  
       2022-01-27 10:55:09 +08:00
    JPA 有个东西,叫做 projection ,根据需要取字段
    nekoneko
        4
    nekoneko  
       2022-01-27 17:55:41 +08:00
    都 toJSONString 了干嘛要再 parseObject,直接返字符串呀
    6IbA2bj5ip3tK49j
        5
    6IbA2bj5ip3tK49j  
       2022-01-28 16:45:51 +08:00
    Jackson 也有自己的 filter
    slomo
        6
    slomo  
       2022-01-28 17:15:15 +08:00
    动态代理脱敏
    yidinghe
        7
    yidinghe  
       2022-01-28 22:48:03 +08:00
    让调用者来告诉你具体如何返回,比如请求里面带一个属性 {fields: {realName:"name", returnName:"name1"}} ,这样你就知道要取 name 字段,并且用 name1 的名字返回给调用者
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1460 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:13 · PVG 01:13 · LAX 09:13 · JFK 12:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.