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

ffw5b7 2月前 39

如题,比如 如何自动将一个对象的所有数学属性 大于 1000 的 转换为 xx.x 万。

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


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



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

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

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

    一个思路:把 json 转化为 jsonString,然后对需要转换的字段直接处理,最后把处理了的 jsonString 用 jackson 转换为对象。
  • Cbdy 2月前
    引用 9
    自己手写一下也就十几二十行代码,没有必要找现成的库吧
  • napsterwu 2月前
    引用 10
    手写一下基本都是 split(‘.’)迭代一下,再处理一下 edge case,没几行代码。
  • 游客
    11
返回