【发布时间】:2020-06-05 03:08:07
【问题描述】:
我有一个带有已定义架构的 json 有效负载(rest api 的请求有效负载),但有一个属性可以采用一组未知键值对。每个属性的值可以是不同的类型,如数字、字符串、数组、范围、日期等。如何为该属性创建 POJO 并使反序列化工作相同?
我目前正在考虑为我的 Property 类编写一个自定义反序列化器,在其中我检查值的类型并相应地执行一些自定义逻辑。
这看起来是一个典型的要求。我觉得 Jackson 或 Gson 中应该有一些我想念的东西。如果它已经存在,我很乐意重用。我在 SO 中环顾四周,但到目前为止找不到一个好的答案。任何建议将不胜感激。
{
"id": 1234,
"name": "test name 1",
"properties": [
{
"key_a": 100
},
{
"key_b": [
"string1",
"string2",
"string3"
]
},
{
"key_c": {
"range": {
"min": 100,
"max": 1000
}
}
}
]
}
我认为我的属性对象的 POJO 看起来像这样。
class Property {
private String key;
private Value value;
}
【问题讨论】:
-
一种简单的方法是将其反序列化为
List<Map<Stirng, Object>>。 -
类
Value的结构是什么?
标签: java json jackson gson json-deserialization