有没有可能以某种方式将动态JSON对象(没有固定模式)转换为Java对象?
例如,第一次,我可以在运行时获得以下JSON对象:
{
"addressDetails": {
"homeAddresses": [
{
"houseNo": "1",
"city": "2"
}
],
"currentAddress": {
"houseNo": "1",
"city": "2"
}
},
"personalDetails": {
"birthDetails": {
"birthPlace": "1",
"birthMonth": "2"
}
},
"confidentialDetails": {
"birthDetails": {
"birthPlace": "1",
"birthMonth": "2"
}
},
"bankingDetails": {
"bankName": "1",
"bankAccountNo": 2
}
}
下一次,也许是这样的:
{
"confidentialDetails": {
"birthDetails": {
"birthPlace": "1",
"birthMonth": "2"
}
},
"personalDetails": {
"birthDetails": {
"birthPlace": "1",
"birthMonth": "2"
}
}
}
我如何处理所有这些变化?是否可以与Jackson/Gson或其他一些库?
我希望找到一个非常通用的解决方案,可以优雅地处理JSON对象中的不同变化。
3条答案
按热度按时间mqxuamgl1#
我不知道我是否理解了你的问题。但是,你可以尝试将所有可能的JSON对象定义为一个对象,然后使用GSON或其他JSON转换工具序列化它们。像这样:
或者,如果要定义的类型太多,您可以简单地将JSON字符串转换为JSON对象,以便像这样使用:
n3ipq98p2#
用Jackson库可以做到这一点,只需读取JSON并用
addressDetails
和bankingDetails
键删除数据。输出将为:
kknvjkwl3#
您可以将其反序列化为
Map<String,Object>
ObjectMapper来自Jackson库
sidenote:Java是一种类型化语言,如果你这样做,你将失去语言提供的类型检查的一些好处