给定JSON
字符串,我需要将其转换为名为TransactionInfo
的POJO
JSON字符串
{
"transactionId": "EFODKKXHE003",
"isSettled": false,
"transactionProperties": [
{
"key1": "Value1"
},
{
"key2": "Value2"
},
{
"key3": "Value3"
}
]
}
波约
class TransactionInfo {
String transactionId;
Boolean isSettled;
Map<String,String> transactionProperties;
}
附加注解(来自备注)
在反序列化之后,我想访问transactionProperties
Map中的不同键。如果将其转换为List<Map<String,String>>
,则会变得复杂。仅供参考,这些键保证是唯一的,因此最后,我需要一个单一的平面Map。另外,我不需要将TransactionInfo
序列化回JSON
。
"我的努力"
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.readValue(jsonString, TransactionInfo.class);
但我得到了一个例外,如下所示:
无法从数组值(标记JsonToken.START_ARRAY
)反序列化java.util.LinkedHashMap<java.lang.String,java.lang.Object>
类型的值
有谁能指导我如何正确地做这件事吗?任何帮助都非常感谢。
编辑
我已经浏览了以下帖子,但似乎没有一个与我的用例匹配
2条答案
按热度按时间pnwntuvh1#
键保证是唯一的,所以最后,我只需要一个平面Map。另外,我不需要将
TransactionInfo
序列化回JSON。由于所有键都是唯一的,并且您不关心将此POJO序列化回JSON,因此可以将Map列表转换为构造函数中的 map。
main()
的代码片段:jdg4fx2g2#
一种选择是将
transactionProperties
字段的类型更改为List<ObjectNode>
,然后遍历列表,并对每个元素使用其fields()
方法来检索其成员