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

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

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

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

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

4523閲覧

jspの<script>タグにDTOを渡して、json形式に変換したい。

merci_children

総合スコア44

JSON

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

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/07/03 13:41

やりたいこと

表題の通り、jspの<script>タグ内の処理にDTOを渡して、json形式に変換したい。

質問

処理の流れとしては、jsp内でSessionからDTOを取得し、<script>タグ内に渡す。<script>タグ内でDTOをjson形式に変換する。みたいなことを考えています。
上記処理を行う中で、以下について知識不足のため知識をお借りしたいです。
※そもそも処理の流れを変えたほうが良いなどあれば、教えていただきたいです。

①jsp内でSessionからDTOを取得し、<script>タグ内に渡す方法と受け取る方法がわかりません。
⇒formを使用して渡すとネットを調べると書いてあるのですが、具体的な処理のイメージを教えていただきたいです。

<script>タグ内でDTOをjson形式に変換する方法。
⇒昨日teratailで質問をしたところ、javascript内でjavaのDTOをjson形式に変換することはできないため、java内でjson形式に変換したほうがよいと教えていただきました。
できれば、javaはいじりたくないので、<script>内で受け取ったDTOをjavascriptでjsonに変換できる形式に変換して処理を行いたいです。
どう実装すればよいかイメージがないので、教えていただきたいです。

長々として申し訳ありませんが、回答いただけると嬉しいです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

JavaのオブジェクトはJavascriptでは解釈できないので、JavaとJavascriptでお互いに解釈しあえる「JSON形式の文字列」に変換して、画面に渡す必要があります。

基本の基ですが、なぜお互いに解釈しあえるかと言うと、「JSON形式の文字列」という言い方の通り、JSONという形式にフォーマット化された「ただの文字列」だからです。

文字列であれば基本的には言語問わず読み書きが出来ます。
文字列には互換性があるということです。

JavaのオブジェクトとJavascriptのオブジェクトに互換性はありません
言語が異なる以上、各言語のオブジェクト構造や定義方法も異なるからです。

C言語のソースファイルを C++としてコンパイルしても(ほとんどの場合は)問題がないように、もし言語間の互換性が存在するなら、その互換性がある別言語の機能を利用できるかもしれません。
が、やはり「JavaのオブジェクトをJavascript側でそのまま利用する」のは互換性がないので無理です。


と言う前提を説明して、改めて順を追うと

  1. Java(サーバー)側でSessionからDTOを取得し、JSON形式の文字列に変換する
  2. JSP(クライアント)側でスクリプトレットやAjax辺りを利用してJavascriptにJSON形式の文字列を渡す

です。

しつこいようですが、
もしJava側に「JavaとJavascriptが両方解釈できるような何かに変換する処理」が存在しないなら、DTOをJavascript側に渡すことは不可能です。

上記手順のような実装を検討してください。

投稿2019/07/04 02:21

編集2019/07/04 02:37
BluOxy

総合スコア2663

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

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

0

イマイチ質問文が理解しきれないので、できればコードを提示するなどして「どこでなにをしたいのか」を示して欲しいところですが…

java内でjson形式に変換したほうがよいと教えていただきました。できれば、javaはいじりたくないので

とりあえずこのあたりで何か誤解してるような気がしました。

JavaとJavaScriptは全く別の言語なので、JSON形式でJavaとJavaScript間でデータの受け渡しがしたいなら、「JavaでJSONにした方がよい」というより「JavaでJSONにするしかない」という理解が正しいはずです。(前の質問についてる回答は二つともそういう趣旨です。たぶんシリアライズ云々の言及が理解できなかったんでしょうけど…)

なのでJavaのプログラム側をなんとかする必要があります。

投稿2019/07/03 17:27

gentaro

総合スコア8949

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

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

merci_children

2019/07/03 21:33

昨日に引き続き、回答ありがとうございます。 文字列結合して、jsonの形式にするなどのやり方もあるのかなと考えたのですが、だめでしょうか。
gentaro

2019/07/04 00:34

Java→JavaScriptへのデータの受け渡しは「JSON形式の文字列」である事を理解されてますでしょうか? JavaScript側ではその「文字列」をJson.parse()を使って「オブジェクト」にします。 つまりJavaでやるべきことは「DTOの内容をJSON形式の文字列に変換する」ということです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問