2016-07-31 17 views
0

PUTリクエストからJSONオブジェクトをサーバーに渡しています。リクエスト自体は機能しますが、アンダースコア(snake_case)を持つJSONのフィールドは無視されます。リクエストは受け取ったデータを出力して何が出力されているかを確認し、アンダースコアの値はcamelCaseに変換され、パースされません。ここではクラスがあります:Jersey MOXyが解析されていませんsnake_case

Public User{ 

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

} 

私はPUTリクエストに渡すJSONオブジェクト:PUTメソッドのみMOXY、この場合

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

にキャッチされ、出力が何であるかを返し

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

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

「some_value」が「someValue」に変更され、実際の値が更新されなかったことに注目してください。なぜこのようなことが起こっているのか?

答えて

1

MOXyはデフォルトでJava Beanの規約に従います。これは、ラクダのケースを示唆しています。あなたはキャメルケースを使用したい(またはできない)していない場合は、フィールドに注釈を追加することができます:あなたはすべてのあなたのフィールドに注釈を付けたくない場合は

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

XMLNameTransformerを使用しています。

+0

これで問題の半分が処理され、値が更新されました。しかし、出力にはまだcamelCaseが表示されます。どのようにそれを修正する上で任意のアイデア?それとも私はちょうどそれと一緒に行かなければならないのですか? – Flopn

+0

'@XmlElement'アノテーションは読み書きの両方に適用する必要がありますので、問題は別の場所にあるはずです。より多くのヘルプが必要な場合は、[MCVE](https://stackoverflow.com/help/mcve)を投稿してみてください。 –

+0

これは実際には機能しません。既存のJSONに別のフィールド「some_value」を追加しました。これには「someValue」という値が入りましたが、渡された値は – Flopn

関連する問題