使用readTree时防止对象映射器将String转换为数字

我正在尝试通过对象映射器的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"}}

我已经尝试过使用MapperFeatureDeserializationconfig的各种配置选项,但仍然无法正常工作。有人可以建议如何解决吗?我希望这些值得到正确处理。我正在使用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;
}
qq19141221 回答:使用readTree时防止对象映射器将String转换为数字

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3138729.html

大家都在问