Java 反序列化番石榴';s与Jackson一起的桌子“扔”;JsonMappingException:找不到适用于类型“的构造函数”;
我使用的是Java 反序列化番石榴';s与Jackson一起的桌子“扔”;JsonMappingException:找不到适用于类型“的构造函数”;,java,json,jackson,guava,Java,Json,Jackson,Guava,我使用的是jackson数据类型guava。我正试图从JSON反序列化一个表,但遇到了一个异常 我的代码是: @Test public void jsonTable() throws IOException { Table<String, String, String> table = HashBasedTable.create(); table.put("row1", "col1", "cell11"); table.put("row1", "col2",
jackson数据类型guava
。我正试图从JSON反序列化一个表,但遇到了一个异常
我的代码是:
@Test
public void jsonTable() throws IOException {
Table<String, String, String> table = HashBasedTable.create();
table.put("row1", "col1", "cell11");
table.put("row1", "col2", "cell12");
table.put("row2", "col1", "cell21");
table.put("row2", "col2", "cell22");
ObjectMapper mapper = new ObjectMapper()
.registerModule(new GuavaModule());
String tableJson = mapper.writeValueAsString(table);
System.out.println(tableJson);
Table<String, String, String> deserializedTable = mapper.readValue(tableJson, HashBasedTable.class);
}
这很有意义,因为HashBasedTable没有默认构造函数。我们应该使用HashBasedTable.create()构建它。我怎么能告诉杰克逊呢
在上,我发现了如何反序列化番石榴的多重映射:
@Test
public void convert() throws JsonParseException, JsonMappingException,
JsonProcessingException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new GuavaModule());
Multimap<String, NavItem> navs = objectMapper.readValue(
objectMapper.treeAsTokens(objectMapper.readTree(jsonString)),
objectMapper.getTypeFactory().constructMapLikeType(
Multimap.class, String.class, NavItem.class));
logger.info(navs);
assertThat(navs.keys(), hasItems("123455", "999999"));
}
@测试
public void convert()抛出JsonParseException、JsonMappingException、,
JsonProcessingException,IOException{
ObjectMapper ObjectMapper=新的ObjectMapper();
registerModule(新的GuavaModule());
Multimap navs=objectMapper.readValue(
objectMapper.treeAsTokens(objectMapper.readTree(jsonString)),
objectMapper.getTypeFactory().constructMapLikeType(
Multimap.class、String.class、NavItem.class));
记录器信息(导航);
资产(navs.keys(),hasItems(“123455”、“999999”);
}
如何将其应用于表格?没有ConstructableLikeType这类东西。首先,尝试使用而不是jackson数据类型guava,因为
对Guava的
表的支持似乎不完整,因为存在一些问题。因为它是开源的,所以你可以自己做(如果你这样做,请回馈!)-你可以使用其他人写的东西,比如(这也表明支持序列化,但不支持反序列化)。谢谢。我想我将把表
转换成映射
,然后对其进行序列化/反序列化。顺便说一句,jackson数据类型集合文档应该提到库中每个集合的支持状态(特别是如果它完成了一半-这是非常误导的)。
@Test
public void convert() throws JsonParseException, JsonMappingException,
JsonProcessingException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new GuavaModule());
Multimap<String, NavItem> navs = objectMapper.readValue(
objectMapper.treeAsTokens(objectMapper.readTree(jsonString)),
objectMapper.getTypeFactory().constructMapLikeType(
Multimap.class, String.class, NavItem.class));
logger.info(navs);
assertThat(navs.keys(), hasItems("123455", "999999"));
}