HashMap testMap = new HashMap();
testMap.put("Key1", "Value1");
testMap.put("Key2", null);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enableDefaultTyping();
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL,JsonTypeInfo.As.WRAPPER_OBJECT);
objectMapper.setVisibility(PropertyAccessor.SETTER,JsonAutoDetect.Visibility.NONE);
objectMapper.setVisibility(PropertyAccessor.GETTER,JsonAutoDetect.Visibility.NONE);
objectMapper.setVisibility(PropertyAccessor.FIELD,JsonAutoDetect.Visibility.ANY);
objectMapper.setVisibility(PropertyAccessor.IS_GETTER,JsonAutoDetect.Visibility.NONE);
//objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, true);
String jsonString = objectMapper.writeValueAsString(testMap);
System.out.println(jsonString);
问题:
objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, true);
a)当我使用上述语句并执行时,它会抛出异常。
java.lang.UnsupportedOperationException: Type id handling not implemented for type java.lang.Object
at com.fasterxml.jackson.databind.JsonSerializer.serializeWithType(JsonSerializer.java:142)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeTypedFields(MapSerializer.java:798)
objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
b)当我使用上述声明并执行时,它工作正常,但结果如下,
{"java.util.HashMap":{"Key1":"Value1"}}
但是从json中删除了Key2。那么如何保留空值?
objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, true);
c)当我使用上述语句并使用jackson-databind.jar(版本2.7)执行时 它也可以工作并保留空值。 但是jackson-databind版本2.7支持jdk 7开始。所以我如何在jdk 6版本中使用相同的东西?
让我知道任何其他替代方法来克服它。
答案 0 :(得分:0)
我使用jdk 6验证了jackson-databind.jar(版本2.7.2)并且正常工作。