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

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

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

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

JSON

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

Java

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

1回答

1130閲覧

Intelli j IDEA でJSONを使おうとしたが「シンボルなし」となる

meex

総合スコア55

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

JSON

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

Java

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2021/07/08 14:03

編集2021/07/09 05:32

環境

windows 10
Intelli J Idea 2021.1
Playframework 2系

やりたいこと

Playframeworkにて、Keepa APIへリクエストを出したいです。

Java

1//import org.json.*; 2 3String runSample() { 4 5 String strUrl = "https://api.keepa.com/product/?key=XXXXXXX&domain=5&only-live-offers=1&days=2&offers=40&asin="; 6 HttpURLConnection urlConn = null; 7 InputStream in = null; 8 BufferedReader reader = null; 9 10 StringBuilder output = new StringBuilder(); 11 12 try { 13 //接続するURLを指定する 14 URL url = new URL(strUrl); 15 16 //コネクションを取得する 17 urlConn = (HttpURLConnection) url.openConnection(); 18 urlConn.setRequestMethod("GET"); 19 urlConn.setRequestProperty("Accept-Encoding", "gzip"); 20 urlConn.setRequestProperty("Connection", "Keep-Alive"); 21 urlConn.setRequestProperty("Accept-Language", "jp"); 22 23 urlConn.connect(); 24 int status = urlConn.getResponseCode(); 25 System.out.println("HTTPstatus: " + status); 26 27 if (status == HttpURLConnection.HTTP_OK) { 28    in = urlConn.getInputStream(); 29    reader = new BufferedReader(new InputStreamReader(in)); 30 31    String line; 32    while ((line = reader.readLine()) != null) { 33   System.out.println(222); 34   output.append(line); 35 //   JSONObject myjson = new JSONObject(line); 36 //   JSONArray the_json_array = myjson.getJSONArray("profiles"); 37   } 38   System.out.println(output.toString()); 39 } 40 } catch (IOException e) { 41 e.printStackTrace(); 42 } finally { 43 try { 44 if (reader != null) { 45 reader.close(); 46 } 47 if (urlConn != null) { 48 urlConn.disconnect(); 49 } 50 } catch (IOException e) { 51 e.printStackTrace(); 52 } 53 } 54 return output.toString(); 55}

上記の結果

イメージ説明
文字化けしました。

これは、「JSONとして帰ってくるがそのまま表示しているから文字化けしているんだ」と考え、JSONObjectを使用しようとしました。

import org.json.*;

をしたところ、、、

パッケージが見つかりません となりました。

PlayframeworkでJSONを使いたい場合は、どのようにすればよいでしょうか?

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

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

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

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

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

guest

回答1

0

自己解決


自己解決

Java

1 public Result index() { 2 3 String jsonStr = "{\"key\" : \"value\"}"; 4 5 6 //JSONにする 7 ObjectNode rootJson = Json.newObject(); 8 rootJson.put("localDate", Calendar.getInstance(TimeZone.getDefault()) 9 .getTime().toString()); 10 rootJson.put("utcDate", 11 Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime() 12 .toString()); 13 14 ObjectNode timeZonesJson = Json.newObject(); 15 for (String timeZoneId : TimeZone.getAvailableIDs()) { 16 TimeZone tz = TimeZone.getTimeZone(timeZoneId); 17 timeZonesJson.put(tz.getDisplayName(), tz.getID()); 18 } 19 20 rootJson.put("timeZones", timeZonesJson); 21 22 //解析 23 JsonNode jsonNode = Json.parse(jsonStr); 24 25 return ok(jsonNode.get("key")); 26 27 // return ok(views.html.index.render()); 28 }

PlayframeworkでJSONにする方法
https://netmark.jp/2012/12/play-framework-json.html
⇒import play.libs.Json; ObjectNode rootJson = Json.newObject();

PlayframeworkでJSONを解析する方法
https://qiita.com/miyatin0212/items/fdfe3c6141323ae281c3
⇒import play.libs.Json; JsonNode jsonNode = Json.parse(jsonStr);

を使うことにより解決できました。


なお、KeepaのGZIPレスポンスを解析するときは「new GZIPInputStream(is,100);」
を使うとうまくいきました。

java

1 HttpURLConnection urlConn = null; 2 InputStream is = null; 3 GZIPInputStream in = null; 4 BufferedReader reader = null; 5 6 StringBuilder output = new StringBuilder(); 7 8 try { 9 //接続するURLを指定する 10 URL url = new URL(strUrl); 11 12 //コネクションを取得する 13 urlConn = (HttpURLConnection) url.openConnection(); 14 urlConn.setRequestMethod("GET"); 15 urlConn.setRequestProperty("Accept-Encoding", "gzip"); 16 urlConn.setRequestProperty("Accept", "gzip, deflate"); 17 urlConn.setRequestProperty("Content-Encoding", "gzip"); 18 urlConn.setRequestProperty("Connection", "Keep-Alive"); 19 urlConn.setRequestProperty("Accept-Language", "jp"); 20 urlConn.setRequestProperty("User-Agent","Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-JP-mac; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 21 22 urlConn.connect(); 23 24 int status = urlConn.getResponseCode(); 25 26 System.out.println("HTTPstatus: " + status); 27 28 if (status == HttpURLConnection.HTTP_OK) { 29 30 is = urlConn.getInputStream(); 31 32 in = new GZIPInputStream(is,100); 33 34 reader = new BufferedReader(new InputStreamReader(in)); 35 36 String line; 37 38 while ((line = reader.readLine()) != null) { 39 System.out.println(222); 40 output.append(line); 41 // JSONObject myjson = new JSONObject(line); 42 // JSONArray the_json_array = myjson.getJSONArray("profiles"); 43 44 } 45 46 System.out.println(output.toString()); 47 } 48 49 } catch (IOException e) { 50 e.printStackTrace(); 51 } finally { 52 try { 53 if (reader != null) { 54 reader.close(); 55 } 56 if (urlConn != null) { 57 urlConn.disconnect(); 58 } 59 } catch (IOException e) { 60 e.printStackTrace(); 61 } 62 } 63 return 64 //"OK" 65 output.toString() 66 ; 67 }

イメージ説明

投稿2021/07/11 01:33

編集2021/07/11 01:45
meex

総合スコア55

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問