2017-08-17 4 views
0

Ich versuche, ein Java-Objekt zu JSON-Objekt mit dem Code unten zu deserialisieren und erkannte, dass die Parameter, die mit Großbuchstaben beginnen, doppelt geschrieben wurden. Beispielsweise;Java JSON schreibt doppelt

Request req = new Request(); 
req.setMAC("abcdef"); 
req.setMACParams("term:id:orderno"); 
req.setOrderNo("999xdef123"); 

final ObjectMapper mapper = new ObjectMapper(); 

String json = mapper.writeValueAsString(req); 

Innerhalb von json string:

{ "MAC":"abcdef","MACParams":"term:id:orderno","OrderNo":"999xdef123","mac":"abcdef","macparams":"term:id:orderno","orderno":"999xdef123" } 

Also, was soll ich tun, diesen doppelten Code zu verhindern?

+0

hmm java ist case sensitive, 'MAC' ist anders als' mac' ... nicht sicher, was die Frage ist ... – nafas

+0

https://Stackoverflow.com/a/37686018/1927832 –

+0

Veröffentlichen Sie ein vollständiges minimales Beispiel das Problem reproduzieren. Wir können Ihren Code nicht sehen, wenn Sie ihn nicht posten. Und die paar Zeilen, die Sie gepostet haben, sind nicht einmal gültiger Java-Code. –

Antwort

1

Dieses Problem tritt aufgrund Großbuchstaben in Feldeigenschaftsnamen verwendet. Verwenden Sie einfach @JsonProperty Annotation in jedem Feld der Request-Klasse, dann wird es nur auf den Vornamen deserialisieren.

ZB:

class Request{ 
    @JsonProperty("MAC") 
    private String mac; 

} 
0

Haben Sie in Ihrer Klasse anfordern Getter & Setter haben, aber die Getter nicht Java Bean Regeln folgen, Das Feld "MAC" whith getmac und setMAC whill richtig sein, aber " getMac "wird im Ergebnis zweimal mac generieren.