问题描述
我正在尝试使用Quarkus的JSON-B实现反序列化以下JSON(see API documentation)。
给我带来麻烦的是为多个JSON对象动态生成的数字键。我想将所有未知属性反序列化为Map<Long,MyObject>
。仅仅在数据对象内部声明一个Map是行不通的。
杰克逊似乎使用@JsonAnySetter
注释完全支持所需的行为(请参见documentation)。
我能做的是编写自己的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。