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);
Frage:Wie Karte behalten Nullwerte in der jackson mit
objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, true);
a) Wenn ich obige Aussage und führt verwenden, ist es unter Ausnahme ist zu werfen.
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) Wenn ich die obige Aussage und führt zu verwenden, es funktioniert gut, aber Ergebnis ist wie unten,
{"java.util.HashMap":{"Key1":"Value1"}}
Aber Key2 aus der json entfernt. So, wie man Nullwerte behält?
objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, true);
c) Wenn i obige Aussage usethe und führt mit Jackson-databind.jar (Version 2.7) Es arbeitet und auch Nullwerte beibehalten. Aber jackson-databind Version 2.7 unterstützt jdk 7 weiter.So wie kann ich dasselbe in jdk 6 Version verwenden?
Lassen Sie mich andere Alternativen kennen, um es zu überwinden.
Haben Sie versucht, einen benutzerdefinierten Serializer zu schreiben? – VinayVeluri