为json字符串创建通用java映射器
我正在从事一个Spring boot项目,在那里我收到不同格式的Json字符串。我的目标是将这些Json字符串转换为统一的Java类
我可以收到此Json的许多变体:
{ "id" : "someId", "type" : "temperature", "value" : 21.0 }
例如,一个变体可能看起来像:
{ "id" : "someId", "data" : { "type": "temp", "val" : 21.0 }, "location": "here" }
因此,这两个Json必须映射到同一个Java类中。 我已经想到了两种解决方案:
第一个解决方案
1)为我可能收到的每个Json创建一个特定的Java类
2)创建一个接受此特定对象并返回统一Java类的函数
第二种解决方案
1)使用Json字符串创建JsonNode
2)对于每个键,尝试将其与统一Java类的字段相匹配。 但我们必须考虑节点的每一个可能的关键点,如“value”或“val”
解决这个问题的最佳方法是什么? 我正在寻找一个易于维护的解决方案
编辑:我已经在使用Jackson,但我的问题是将这个Json对象映射到一个独立于Json的通用Java类中
编辑2:统一Java类是一个已经存在的类模型,用于在数据库中存储信息。因此,为了将信息推送到数据库中,我必须将接收到的每个json转换成这种统一格式
# 1 楼答案
我通常使用谷歌的GSon。这真的很有用。查一下格森。在您的案例中使用fromJson(yourJsonString)
你可以很容易地使用
# 2 楼答案
我可以看到以下解决方案。例如,您使用
Jackson
进行解析JSON
您可以声明您的自定义ObjectMapper
:此映射器包含用于忽略未知属性的其他选项
Map<String, Object>
作为目标类。这是magic key
,它总是有效的Contra:您没有json验证,必须添加许多常量键才能读取李>示例:
客户端:
示例:
客户端: