使用在 Kotlin/Java 中输入的异构地图

发布于 2025-01-11 05:41:03 字数 873 浏览 2 评论 0原文

我从数据库中读取一些 JSON 项目并创建一个 Map来自他们每个人。我想将这些项目作为 Map 进行处理,因为使用 Jackson Object Mapper 的 .convertValue 实例化对象需要很长时间(每个项目比使用 Map 多了毫秒数)。但是,地图的类型并不统一,当我需要获取一些嵌套道具(例如 map.child.prop)时,我需要像这样:

val prop = (parentMap["child"] as Map<String, Any>)["prop"]

我知道有 Apache Commons 提供了 PropertyUtils.getProperty(map, "map.child.prop")),但这并不完全是我想要的。该对象非常复杂,我需要在输入时处理整个地图。有这样的选择吗?由于该项目是一张大地图,选角变得很疯狂,但目前这是我唯一的解决方案。

我尝试过的方法:

  1. 将地图转换为类
  • 太长
  1. 使用类型化地图库 https://github.com/broo2s/typedmap< /a>
  • 当您添加一些键/值时,地图类型似乎是连续构建的。但我不是持续构建,而是从 JSON 进行转换。
  1. 使用 Kotlin 委托属性
  • 对于平面结构效果很好,但在深入时需要进行转换。

I read some items from DB as JSON and create a Map<String, Any> from each of them. I want to process the items as Map because instantiating objects using Jackson Object Mapper's .convertValue took a long time (decimals of milliseconds more than with Map, per item). However, the type of the map is not uniform and when I need to for example get some nested prop (e.g. map.child.prop), I need to go like this:

val prop = (parentMap["child"] as Map<String, Any>)["prop"]

I am aware there is Apache Commons providing PropertyUtils.getProperty(map, "map.child.prop")), but it is not exactly what I want. The object is quite complex and I need to work with the whole map as it was typed. Is there such an option? The casting goes crazy as the item is a big map, but currently the only solution I have.

What I tried:

  1. Convert map to class
  • Too long
  1. Using typed map library https://github.com/broo2s/typedmap
  • The map type seems to be built continuously as you add some key/value. But I am not building continuously, I am converting from JSON.
  1. Using Kotlin delegated properties
  • Works well for flat structure, but needs to casting when going deeper.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文