嗨,
我有一个 (POJO) 模型对象,有时需要将其转换为 Map
。
我目前正在使用 Jackson 作为一个很好的库,我在其他地方也经常使用它。
除了我的 POJO 中的变量是 Set
之外,一切正常,因为 Jackson 在结果 List
中将它们转换为 Map
。
但这不行,因为我的用例需要 Set
的属性。
这是一个简短的单元测试来显示问题:
@Getter
@AllArgsConstructor
public class O {
private Set<String> abc;
}
@Test
void test() throws Exception {
Map map = new ObjectMapper().convertValue(new O(Set.of("abc", "def")), Map.class);
assertFalse(List.class.isAssignableFrom(map.get("abc").getClass())); // Already fails
assertTrue(Set.class.isAssignableFrom(map.get("abc").getClass()));
}
如何让 Jackson 使用变量的原始 Collection 类型?
谢谢
克里斯