9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

jacksonを使ってjsonにシリアライズする

Last updated at Posted at 2014-12-11

最初に

シリアライズでも少しハマったから書く。

シリアライズのやりかた

ObjectMapper#writeValueAsStringを使う。
Stringにしか変換できない。ObjectNodeに変換しようとすると一手間かかる。

String mapper = new ObjectMapper().writeValueAsString(test);

引っかかる

やっぱりなんかハマる。

オブジェクトのメンバがprivate変数だと取れない

そんなんらしい。ちなみに↓みたいなエラーが出る。

RuntimeException: org.codehaus.jackson.map.JsonMappingException: No serializer found for class

補足:
publicな変数にするか、getter/setterを書けば問題なく通る。

annotation入れてるとエラーが出ないことがある

例えばデシリアライズに使ったJsonIgnorePropertiesをtrueにしてると空のデータが返ってくるだけ、とか言う状態になる。

    @JsonIgnoreProperties(ignoreUnknown=true)

補足:
この設定を入れないとフィールドの削減を行った際にエラーになってしまうため、使いようによってはマストになる設定ではあるが、初期開発時にはトラブルの元になるので十分注意すること。

つまり

jsonでやりとりする可能性のあるオブジェクトはメンバをpublicな変数として記述するか、独自でtoJson()メソッドを定義するとかしないといけない(多分)。
ObjectNodeで色々やりたい場合はそっちの方がいいのかもしれない。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?