2016-06-20 12 views
0

Ich habe JSON String wieJackson konvertiert leeren String in null

{"firstName":"ABC", "middleName":"", "lastName":"XYX"} 

Mir Umwandlung diese Zeichenfolge in JsonNode

ObjectMapper mapper = new ObjectMapper(); 
mapper.readValue(jsonString, new TypeReference<JsonNode>() {}); 

Es funktioniert perfekt, aber ich will Middle Wert von "" zu null konvertieren , so dass JsonNode wie

sein sollte

Ich habe einen Serializer

ObjectMapper mapper = new ObjectMapper(); 
    SimpleModule module = new SimpleModule(); 
     module.addSerializer(String.class, new StdSerializer<String>(String.class) { 

      @Override 
      public void serialize(String value, JsonGenerator jgen, SerializerProvider provider) 
        throws IOException, JsonGenerationException { 
       if("".equalsIgnoreCase(value)){ 
        jgen.writeNull(); 
       }else{ 
        jgen.writeString(value); 
       } 

      } 
     }); 

     mapper.registerModule(module); 
    mapper.readValue(jsonString, new TypeReference<JsonNode>() {}); 

Aber es kehrt gleichen String als JsonNode hinzugefügt. Was fehlt mir eigentlich?

+0

eigentlich Würden Sie nicht wollen { "firstname": "ABC", "Middle" :, "nachName": "XYX"} dann? –

+0

Ich muss es später in Bohne umwandeln. Also ich will nur null –

Antwort

0

Jackson gibt Ihnen Null für andere Objekte, aber für Strings gibt es leere String.

Aber Sie können einen benutzerdefinierten JsonDeserializer, dies zu tun:

class CustomDeserializer extends JsonDeserializer<String> { 

    @Override 
    public String deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException, JsonProcessingException { 
     JsonNode node = jsonParser.readValueAsTree(); 
     if (node.asText().isEmpty()) { 
      return null; 
     } 
     return node.toString(); 
    } 

} 
Verwandte Themen