java - 如何使用 JSON-B 反序列化未知属性?
问题描述
我正在尝试使用 Quarkus 的 JSON-B 实现反序列化以下 JSON(请参阅 API 文档)。
这里让我烦恼的是为多个 JSON 对象动态生成的数字键。我想将所有未知属性反序列化为Map<Long, MyObject>
. 简单地在数据对象中声明一个 Map 是行不通的。
Jackson 似乎完全支持使用@JsonAnySetter
注释的所需行为(请参阅文档)。
我能做的就是自己编写JsonbAdapter
来手动解析未知属性,但对于这样一个简单的任务来说,这似乎是一项荒谬的工作。
如何使用 JSON-B 将未知的 JSON 属性反序列化为 Map?
{
"634": {
"AT": {
"av": -61.082,
"ct": 314284,
"mn": -94.58,
"mx": -16.136
},
"First_UTC": "2020-09-07T15:29:16Z",
"HWS": {
"av": 6.685,
"ct": 156912,
"mn": 0.452,
"mx": 17.887
},
"Last_UTC": "2020-09-08T16:08:49Z",
"PRE": {
"av": 775.846,
"ct": 159956,
"mn": 746.3902,
"mx": 793.7311
},
"Season": "summer",
},
"635": { ... },
"636": { ... },
"638": { ... },
"sol_keys": [
"634",
"635",
"636",
"638",
],
}
解决方案
它不会直接回答您的问题,但 JSON-B 不具备 Jackson 的所有功能。
因此,如果您错过了某个功能,您可以只使用 Jackson:它也是 Quarkus 世界的一等公民。对于每个 JSON-B 扩展,我们都有对应的 Jackson。
推荐阅读
- sql - PostgreSQL 中 Select 的 Where 部分中的多个嵌入 AND
- sql - 只想更新数据库中填充 fxml UI 的那些项目。未填写的项目应在数据库中保持不变
- typescript - 如何使用 JS 从 aurelia 应用程序访问活动目录
- python - Python:TypeError:“模块”对象不可从子类调用
- html - 自定义 HTML 表单发布到谷歌表格中的不同表格
- tsql - 编码14!列空的组合
- powershell - Get-ChildItem,列出符合某些参数的文件然后Remove-Item
- node.js - 如何将用户输入作为键值或变量从 Html 传递给 js 到 mongodb 数据库?
- python - 有什么方法可以加快 pexpect 或使用内置的 python 函数?
- arrays - 使用 cat EOF 和循环编写 tex 文件