2016-03-19 12 views
0

Dies ist meine POJO-Datei, die @JsonInclude(JsonInclude.Include.NON_EMPTY) für den Null-Wert verwendet.Java-POJO-Datei-Nullwert-Änderung zum voreingestellten Standardwert

hier "university" : "" - leerer Wert

Stromausgang, (jackson das Feld entfernt)

{ "id" : 1, "user_id" : 1, "education" : "s adfsdsd fsdfad", "institute" : "fsdf", "date_from" : "2014-01-01 00:00:00.0", "date_to" : "2011-03-01 00:00:00.0" } 

, aber ich brauche eine Ausgabe wie (anstelle von null i bedarfs- not_defined)

{ "id" : 1, "user_id" : 1, "education" : "s adfsdsd fsdfad", "institute" : "fsdf", **"university" : "not_defined"**, "date_from" : "2014-01-01 00:00:00.0", "date_to" : "2011-03-01 00:00:00.0" } 


import com.fasterxml.jackson.annotation.JsonInclude; 

/** 
* Created by gopu on 18/3/16. 
*/ 
@JsonInclude(JsonInclude.Include.NON_EMPTY) 
public class UserEducation { 

    private long id; 
    private int user_id; 
    private String education, institute, university, date_from, date_to; 

    public UserEducation(long id, int user_id, String education, String institute, String university, String date_from, String date_to) { 
     this.id = id; 
+0

Das sieht für mich eine schreckliche Idee aus. Die Präsentationsschicht sollte darauf achten, dass "nicht definiert" angezeigt wird, wenn in den Daten keine Universität vorhanden ist. Der JSON sollte sich darum nicht kümmern. Aber was ist die Frage/Problem? Warum initialisierst du das Feld im POJO nicht einfach auf "not_defined"? –

+0

eigentlich muss ich alle Null-Wert von SQL-Aufruf mit "not_defined" anstelle von "NULL" auf JSON-Ausgabe – gopu0000

+0

Jetzt ersetzen Sie die Persistenzschicht, zusätzlich zu der Kommunikationsschicht und der Präsentationsschicht auf die Tabelle. Wie gesagt, vermische diese Aspekte nicht miteinander. Halten Sie Ihre Datenbank und JSON sauber und lassen Sie die Präsentationsebene mit der Anzeige "nicht definiert" umgehen, wenn das Feld null ist. Wie gesagt, wo ist das Problem? Wenn die university-Spalte in der Datenbank null ist, dann lassen Sie das university-Feld im JSON auf den Standardwert ("not_defined") oder explizit auf "not_defined". –

Antwort

1

Sie müssen Ihre eigenen JsonSerializer schreiben, um dies zu erreichen:

class MySerializer extends JsonSerializer<String> { 
    @Override 
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) 
     throws IOException, JsonProcessingException { 

     gen.writeString("not_defined"); 
    } 
} 

Und dann mit Anmerkungen versehen Feld, es zu benutzen:

@JsonSerialize(nullsUsing = MySerializer.class) 
private String university; 

von nullsUsing definieren Sie Ihre individuellen Serializer stellen Sie sicher, nur für null Werte genannt werden und nur für das kommentierten Feld (n).

Btw, kommentieren Ihre Klasse mit @JsonSerialize(nullsUsing = MySerializer.class) wird nicht funktionieren - siehe die JsonSerialize Dokumente für Details.

Verwandte Themen