【Java】JSON-libを使ってJSON配列を生成する際に日付型(Date)を好きなフォーマットで変換する方法

Java, 開発

おはようございます。

最近はWEBのサービス開発などでSPA(Single Page Applicatoin)が流行って?るので、
サーバーとクライアントとのデータのやり取りをJSONで行うのはよくあるケースかと思います。

サーバー側をJavaで開発している場合に、Javaオブジェクトや Bean を JSONに変換するのに、
JSON-lib というのも結構主流なやり方かと思いますが、ちょっと日付型のところでハマったので備忘的な記事を。

※JSON-lib 自体の詳しい説明(利用方法)などは省略します。

スポンサーリンク

JSON-libとは

OSDNサイトより転載

Json-libは、beans, map, collection, Java配列、XML to JSON, DynaBeansを変革するJavaライブラリです。 Douglas Crockfordによる作業をベースにしています。

Javaオブジェクトを簡単に JSON文字列に変換したり、逆に JSON文字列からオブジェクトを生成したりといったことが可能です。

昔、XMLへの相互変換ロジックを自作したことがありますが、こういう処理って実際に作ってみると結構大変だったりします。
便利な世の中ですね。

サンプル

変換するサンプルクラスを作成。

Person.java

何故か更新日時を持つパーソンクラスです。

JavaオブジェクトからJSON文字列に変換

こんな感じで、Dateを持つクラスをJSONに変換すると次のような文字列が生成されます。

これはこれで正しいのですが、クライアント側で日時の部分が扱いづらい。。

対応

JSON-lib には、「JsonValueProcessor」という、変換時に対象となる値に対して処理できるインターフェースが定義されているので、
実装したクラスを作成して日付型オブジェクトに対して別途変換する処理を組み込みます。

DateJsonValueProcessor.java

JsonConfig に DateValueProcessor を設定して変換

という感じで、日付型だった場合の処理を設定して変換してあげると次のような文字列が生成されます。

大分シンプルになりました。

まとめ

ちょっとした単発のプログラムネタでした。

実は以前 Python でも同様の問題にぶち当たったことがあって、
だったら Java でも同じようになんとかできるだろうと調べてみたという感じです。

何かのお役に立てれば。

ではでは。

 

スポンサーリンク


関連するコンテンツ