V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
BraveXaiver
V2EX  ›  问与答

请问下有处理过 request body json 深达十多层的 javaer 吗?

  •  
  •   BraveXaiver · 2023-06-16 11:19:48 +08:00 · 839 次点击
    这是一个创建于 560 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请问这种情况,是否仍然应该坚持 POJO 套 POJO 套到叶子节点来个十多层呀?但这样取一个非必需的字段的值的时候,防范 NP 异常的 if 岂不是如同地狱?

    与此同时这个 json 不仅层深还复杂,而且还会出现不同位置都出现一个,阿不,甚至说多个,名相同,比如说,都米名为 identification 的 field ,而各个 identification 的结构也不一样。那这个时候该如何避免 POJO 类名重复呢?或者不需要避免,把包结构与这个 json 的树结构对应起来,用包名做划分,类名任由它重复?

    考虑完这个之后,还有数据库要怎么做持久化啊,我们用的还是关系型数据库 DB2 。在 DB2 的列名上玩拼接,搞出百来个列吗,我的天呐。。

    有没有好心人指点一下,十分感谢!
    5 条回复    2023-06-16 16:05:41 +08:00
    connor123
        1
    connor123  
       2023-06-16 11:34:43 +08:00   ❤️ 1
    关于: 防范 NP 异常的 if 岂不是如同地狱,这条的话,可以使用 jdk 的 Optional.ofNullable 的方式去取值
    yuanmomo
        2
    yuanmomo  
       2023-06-16 13:24:40 +08:00 via iPhone   ❤️ 1
    重名应该可以用内部类解决,定位内部类需要外部类的一起。

    字段太多,没有好办法,尝试用 optional 的流式来避免 if ,else 和 npe ,这个我最近也在学。

    其次需要的字段少,我就用 JSON path 了,我最近的项目只需要取部分字段就用的这个。
    wubalabadub
        3
    wubalabadub  
       2023-06-16 13:36:02 +08:00 via Android   ❤️ 1
    数据库拿一个 blob 存字符串,代码直接用 fastjson 或者 jsonpath 之类的硬取,定义任何 pojo 。

    什么 NP 异常?直接 try catch
    wolfie
        4
    wolfie  
       2023-06-16 13:41:47 +08:00   ❤️ 1
    有必要 实体反序列化吗?

    Hutool 有 json 路径取值,cn.hutool.json.JSONObject#getByPath
    EscYezi
        5
    EscYezi  
       2023-06-16 16:05:41 +08:00 via Android   ❤️ 1
    传参用 Jackson 的 JsonNode 接,然后 Optional 一层层 map 拿要的字段防 npe ,或者用上面说的 json path
    怎么存要看之后需要怎么取
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   972 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:34 · PVG 04:34 · LAX 12:34 · JFK 15:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.