質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Knockout.js

KnockoutJSは、Model-ViewView-Model(MVVM)を用いたダイナミックなHTML ULのためのオープンソースのJavaScriptライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

12911閲覧

JAVA DATE型のRESTデータ返却について

totomore

総合スコア47

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Knockout.js

KnockoutJSは、Model-ViewView-Model(MVVM)を用いたダイナミックなHTML ULのためのオープンソースのJavaScriptライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/07/02 06:33

Java処理でDATE型をJSON形式でクライアントに返却すると
DATE型に格納されているfastTimeの値が渡されてしまいます。

通常、DATE型はJSONで返却しないものでしょうか?
たとえば、文字列の日付フォーマットに変換してJSONに変換するなど
または、クライアント側でfastTimeの値を日付型(yyyy/mm/dd)に変換できるのでしょうか?

サーバ処理の一部
返却する値はdomaのentityリストをJson形式にして返却しています。
※entityリストの中にDATE型があります。

lang

1@RestController 2public class XXXXRestController { 3 4 @ResponseBody 5 @RequestMapping(value="/rest") 6 public List<entityクラス名> XXXメソッド( 7 ServletRequest request 8 ) { 9 10 List<entityクラス名> entity = null; 11 entity = entityクラス名.selectList(); 12 13 return entity; 14 } 15}

開発環境
OS win7
サーバ言語 java1.7
javaフレームワーク spring 4 mvc
O/Rマッピング doma
jsフレームワーク knockout.js
DB oracle12c
ブラウザ 主にIE

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

まず、

通常、DATE型はJSONで返却しないものでしょうか?

についてなのですが、返却する例を以下から挙げます。

Web API Design
https://pages.apigee.com/rs/apigee/images/api-design-ebook-2012-03.pdf
(個人的に、WEBAPIの設計をするときに、よく読み返す資料です。)

これの21ページに以下のような例があります。

Twitter
"created_at": "Thu Nov 03 05:19;38 +0000 2011"

Bing
"DateTime": "2011-10-29T09:35:00Z"

Foursquare
"createdAt": 1320296464

これらは、各WEBサービスの返すJSONの中で、日時がどのように
書かれるかの例になっています。
(ただし、このPDFには、「これらのうち、このフォーマットがベスト」とは書いてはありませんが。)

ご質問に戻りますと、

通常、DATE型はJSONで返却しないものでしょうか?

については、

たとえば、文字列の日付フォーマットに変換してJSONに変換するなど

とおっしゃっているように、文字列や数値に変換して返却します。
上記の例の

"created_at": "Thu Nov 03 05:19;38 +0000 2011"
"DateTime": "2011-10-29T09:35:00Z"

は、文字列にしている例で、

"createdAt": 1320296464

は、エポック秒の整数値がJSONの値になっています。

もう一点、ご質問にある

クライアント側でfastTimeの値を日付型(yyyy/mm/dd)に変換できるのでしょうか?

についてです。
java.util.Date のfastTimeとは何かというと、コンストラクタ

lang

1new Date(long milliseconds)

で与えるmillisecondsのことで、ミリ秒単位です。
ですので、ご質問の回答としては

クライアント側でミリ秒単位のエポックタイムから日時のオブジェクト
(あるいはそれに相当するもの)を作成できるなら、できます。

というものになるかと思います。
たとえば、APIを使うプログラムをJavascriptで書いているなら、
Javascriptでも

lang

1new Date( milliseconds )

というコンストラクタで、引数にミリ秒単位のエポックタイム
を与えて、Dateオブジェクトを作ることができますので、
JSONのプロパティの値として出現する、fastTimeの値から
JavascriptのDateオブジェクトを作り、これを適宜、"yyyy/mm/dd"などの
欲しい文字列に変換することができます。

以上の回答で、問題は解決されましたでしょうか?
参考になれば幸いです。

補足

クライアント側の都合で、

ミリ秒からは日時オブジェクト(またはそれに相当するもの)を作成できないが、
秒単位からだったら作成できる。

のであれば、ミリ秒単位で返ってきた値を 1000 で割った商の値から
日時を作成します。

投稿2015/07/02 07:36

編集2015/07/02 07:58
jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

totomore

2015/07/02 08:07

事細かく教えていただきありがとうございました。大変助かりました。 Web API Design についても今後に活かせそうです。
jun68ykt

2015/07/02 08:23

どういたしまして。問題解決になりそうでよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問