2016-07-31 8 views
0

Ich übergebe ein JSON-Objekt von einer PUT-Anfrage an meinen Server. Die Anfrage selbst funktioniert, jedoch scheinen die Felder im JSON, die einen Unterstrich (snake_case) haben, ignoriert zu werden. Die Anfrage gibt die empfangenen Daten aus, um zu sehen, was herauskommt, und der Wert mit dem Unterstrich wird in camelCase konvertiert und nicht analysiert. Hier ist die Klasse:Jersey MOXy nicht analysieren snake_case

Public User{ 

private int id; 
private String name; 
private int some_value; 

} 

Das JSON-Objekt ich auf die PUT-Anfrage übergeben:

{ "id":1, "name":John, "some_value":5 } 

Die PUT-Methode liefert nur was moxy in diesem Fall gefangen

@PUT 
@Path("user") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public User addUser(User user){ 
    return user; 
} 

Und der Ausgang ist :

{ "id":1, "name":John, "someValue":0 } 

Beachten Sie, dass sich "some_value" in "someValue" geändert hat und der tatsächliche Wert nicht aktualisiert wurde. Irgendeine Idee warum das passiert?

Antwort

1

MOXy folgt standardmäßig Java Bean-Konventionen, die auf camel case hindeuten. Wenn Sie nicht wollen (oder können) verwenden Kamel Fall können Sie eine Anmerkung zu dem Feld hinzufügen:

@XmlElement(name = "some_value") 
private int some_value; 

Wenn Sie auf alle Ihre Felder nicht mit Anmerkungen versehen, verwenden Sie einen XMLNameTransformer.

+0

Das kümmerte sich um die Hälfte des Problems, der Wert ist jetzt aktualisiert. Aber die Ausgabe zeigt immer noch camelCase. Irgendeine Idee, wie man das repariert? Oder muss ich nur damit gehen? – Flopn

+0

Die '@ XmlElement'-Annotation sollte sowohl beim Lesen als auch beim Schreiben gelten, also vermute ich, dass das Problem irgendwo anders sein muss. Sie könnten versuchen, [MCVE] (https://stackoverflow.com/help/mcve) zu veröffentlichen, wenn Sie weitere Hilfe benötigen. –

+0

Eigentlich funktioniert das nicht. Es fügt dem bestehenden JSON ein weiteres Feld "some_value" hinzu, jetzt hat es sowohl das als auch "someValue", aber mit dem übergebenen Wert – Flopn

Verwandte Themen