Simple JSON Class for Java 次回リリースの変更点

うーむ、今頃仕様変更ですよ、あーた。

  • Serializableを実装したクラスのみJSONに変換するよう修正
  • byte[]の場合、Base64文字列に変換。逆も同様
  • byteの場合、今まで-128〜127に変換されていたのを0〜255に変換するよう修正

byteの場合にBase64に変換すべきか悩んだのだが、よくかんがえたらクライアント側にbyte配列を送りたいなんてそんな場合はめったになく、そんなことをやろうとする奇特な奴ならJavaScriptでBase64の逆変換くらいやるだろうと思ったので結局変換かけることにした。

どちらかと言えば1番目の方が影響でかいかなぁ。一応、JavaBeansはSerializableを実装するという規約になっていたはずだし、こうしておけば変なクラスを間違って変換してしまうようなこともなくなるだろうという思惑あり。

Sessionレプリケーションの話もあるので、こういうDTOっぽいクラスにはSerializableをつけておくべきなのだろうなぁ。

もう実装は済んでるけど、今日は眠いので週末にでもリリースする予定。

[追記] 拡張モードONならformat/parseがそれぞれBase64のエンコーダ/デコーダがわりになります((今回の変更でbyteがJSONの配列に変換されなくなったので拡張モードをONにしないと「root要素は配列かオブジェクトのみ」というRFCの制約にひっかかりエラーとなる。))。まぁ、単にたまたまそうなっただけですが。

[追記2] よく考えたらSerializable必須にするとPageクラスをそのままJSON化して返すようなマネができなくなるじゃないか。やっぱりこの案はやめとくか。

[追記3] だいたいこれでネタ切れかな。あと、思いつくとしたらValidatorだけどそれはさすがに別クラスにしなきゃらならないだろうから、今のクラスからは微妙に離れちまうな。後はエラーフォーマットの国際化? 別にいらない気もするが……