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

2023-06-16 11:19:48 +08:00
 BraveXaiver
请问这种情况,是否仍然应该坚持 POJO 套 POJO 套到叶子节点来个十多层呀?但这样取一个非必需的字段的值的时候,防范 NP 异常的 if 岂不是如同地狱?

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

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

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

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

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

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

Hutool 有 json 路径取值,cn.hutool.json.JSONObject#getByPath
EscYezi
2023-06-16 16:05:41 +08:00
传参用 Jackson 的 JsonNode 接,然后 Optional 一层层 map 拿要的字段防 npe ,或者用上面说的 json path
怎么存要看之后需要怎么取

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/949233

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX