我正在尝试通过对象映射器的Map<String,String>
解析从Map<String,Object>
到readTree
的输入。但是,我面临对象映射器将String值自动转换为其他类型的问题。
public void testJson() {
Map<String,String> data = new HashMap<>();
data.put("description","1 2 3");
data.put("nested","{\"testKey\":\"1 2 3\"}");
data.put("amount","1234E1235");
System.out.println(SantizeUtil.getSanitizedData(data));
}
这是输出:{amount=Infinity,description=1,nested={"testKey":"1 2 3"}}
我已经尝试过使用MapperFeature
和Deserializationconfig
的各种配置选项,但仍然无法正常工作。有人可以建议如何解决吗?我希望这些值得到正确处理。我正在使用jackson-databind 2.8。
public Map<String,Object> getSanitizedData(final Map<String,String> data) {
final Map<String,Object> formattedData = new HashMap<String,Object>();
data.entryset().forEach(entry -> {
try {
Object jsonNode = entry.getvalue();
jsonNode = objectMapper().configure().readTree(entry.getvalue());
formattedEmailContext.put(entry.getKey(),jsonNode);
} catch (final IOException ex) {
throw new InvalidDataException("Failed to parse data: " + ex.getMessage());
}
});
return formattedEmailContext;
}