Java 有成熟的框架 获取嵌套多层对象的所有属性对象吗?

2020-09-05 12:46:17 +08:00
 ffw5b7
如题,比如 如何自动将一个对象的所有数学属性 大于 1000 的 转换为 xx.x 万。

个人想法是
1.递归拿所有属性对象,判断属性类型是否是 int 之类的,再判断是否大于 1w,截取小数。
问题:
如果有其他的数学属性不需要转换,这样也转了,不行,


2. 加个判断,属性名规范 只有属性名 A 的才转换、



延伸问题,有成熟的工具类吗? 这样性能怎么? 如果这样实现还有其他坑吗?

在下,小白搜不到类似的,厚脸皮伸手了
1642 次点击
所在节点    问与答
9 条回复
ffw5b7
2020-09-05 12:52:17 +08:00
不想从数据源写 sql 的时候主观直接处理了,
或者说还有类似的需求不是转换,
目的是如题:获取嵌套多层对象的所有属性对象
clf
2020-09-05 13:02:06 +08:00
不明白这样的应用场景是什么。数值的优势就在于可进行算数运算,转换为 x.xx 万后应该就只剩下了显示作用。而显示什么样子,应该让前端处理。接口下发 x.xx 万的数据还会恶心到前端,前端做数据判断还需要去转换为数值?
后端如果需要用到 x.xx 万这样的数据,那就自己写个 get 方法给需要的属性做转换就行了。
ffw5b7
2020-09-05 13:06:13 +08:00
@lychs1998 给前端的数据 都是显示数据,前端只要渲染。 后端想在代码中自动处理了。
clf
2020-09-05 13:06:52 +08:00
如果是获得嵌套多层属性对象这个单一需要的话,就是数据结构的事情了,把树形结构转化为数组或者单层树形结构。
我之前写过一个方法是解析 json 的。嵌套 n 层的数据也可以通过 a.b.c[1].d 这样的 key 值获取,同时可以用 map 的 entryset 遍历。本质上就是数据结构的转换。
clf
2020-09-05 13:11:57 +08:00
@ffw5b7 我个人很讨厌后端过度封装数据。比如时间,我更希望传递我时间戳。数值的显示转换对我来说只是对 text 做一个修改,value 还是数值,这样子我前端计算会方便很多。
ffw5b7
2020-09-05 13:22:21 +08:00
@lychs1998 划分职责的原理还是不懂,前端不擅长处理复杂的业务判断? 或是是性能?客户端性能优先? 数据结构的问题,之前参考 fastJson,深拷贝,有点吃力,就想搜搜 copy 。哈哈哈
clf
2020-09-05 13:28:32 +08:00
获得嵌套对象所有属性值参考我之前写过的这个类(写的比较烂): https://github.com/lychs1998/CatMock/blob/master/src/main/java/cn/myzju/mock/CatContainer.java

但不要引入我写的这个依赖,我设计的时候是为后端 mock 框架填入值设计的,所以只考虑了解析,没考虑还原对象。而且同个包下的 CatMock 对象更是会引入 js 文件和 graalvm 。

一个思路:把 json 转化为 jsonString,然后对需要转换的字段直接处理,最后把处理了的 jsonString 用 jackson 转换为对象。
Cbdy
2020-09-05 16:11:50 +08:00
自己手写一下也就十几二十行代码,没有必要找现成的库吧
napsterwu
2020-09-05 16:36:06 +08:00
手写一下基本都是 split(‘.’)迭代一下,再处理一下 edge case,没几行代码。

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

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

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

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

© 2021 V2EX