jacksonでの命名規則変換
jacksonはretrofitでサーバ側とやり取りするときに、APIサーバから返ってきたjsonのレスポンスをjavaのオブジェクトに変換するために使っている。
僕の場合、APIサーバをrailsで作っているため基本変数名などはスネークケースで書いている。でもjava側というかandroid側はキャメルケースになっている。どっちかをどっちかに合わせなきゃいけないのは面倒。なのでjacksonでスネークケース=>キャメルケースに命名規則を変換してほしいのだけど、結構簡単にできる。
new ObjectMapper().setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES)
これでOK。オブジェクトマッパー作成時にそういう感じのメソッドを呼べばいい。 retrofitで使う場合は、builder作成時に指定すればいい。
private Retrofit.Builder builder = new Retrofit.Builder() .baseUrl("http://192.168.1.1./") .addConverterFactory(JacksonConverterFactory.create( new ObjectMapper().setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES) ));
参考: java - Jackson overcoming underscores in favor of camel-case - Stack Overflow