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

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

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

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

Java

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

Q&A

解決済

1回答

1276閲覧

JAVAでGoogleVisionで帰ってきたJSONデータの下位情報にアクセスしたい

tride

総合スコア68

JSON

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

Java

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

0グッド

1クリップ

投稿2017/08/29 00:05

以下の様にHttpURLConnectionで帰ってきたGoogleVisionのJSONデータをString型respに入れた後、
[2]や[3]にて全体のデータは取れているのですが、それより下位のデータにアクセスする事ができません。
どの様にすればアクセスできるのでしょうか。
今回JSONデータを初めて扱うので何が間違ってるのかどうすれば良いのか解らない状態で行き詰ってます。
ご教示のほどよろしくお願いします。

目的:
以下JSONデータの
responses > webDetection > pagesWithMatchingImages > urlのデータを取得したい

コード: //URLConnection urlConnection = serverUrl.openConnection(); //HttpURLConnection httpConnection = (HttpURLConnection)urlConnection; Scanner httpResponseScanner = new Scanner (httpConnection.getInputStream()); String resp=""; while (httpResponseScanner.hasNext()) { String line = httpResponseScanner.nextLine(); resp += line; } // [1] //JsonNode root = mapper.readTree(resp); //String a4 = root.get("responses").get("webDetection").get("pagesWithMatchingImages").get(0).get("url").asText(); //→エラー:An exception occured while executing the Java class. null // [2] ObjectMapper mapper = new ObjectMapper(); Map<String,Object> result = mapper.readValue(resp, Map.class); System.out.println("result.toString() : " + result toString()); // [3] ObjectMapper mapper = new ObjectMapper(); Map<String,Object> result = mapper.readValue(resp, Map.class); System.out.println("result:" + result.get("responses").getClass() +":"+result.get("responses"));
// [2]の結果 //※冗長部分は省いて、見やすい様に改行を付けています。 { responses= [ { webDetection= { webEntities= [ { entityId=<文字列>, score=<数値> }, { entityId=<文字列>, score=<数値> }, ], pagesWithMatchingImages= [ { url=https://・・・ }, { url=https://・・・ } ] } } ] }
// [3]の結果 // ※冗長部分は省いて、見やすい様に改行を付けています。 [ { webDetection= { webEntities= [ { entityId=<文字列>, score=<数値> }, { entityId=<文字列>, score=<数値> }, ], pagesWithMatchingImages= [ { url=https://・・・ }, { url=https://・・・ } ] } } ]

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

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

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

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

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

guest

回答1

0

自己解決

寝ぼけていたようです。
普通に以下の様に書けばいいだけでしたorz

JSONObject root = new JSONObject(resp); String jsond5 = root.getJSONArray("responses").getJSONObject(0). getJSONObject("webDetection"). getJSONArray("pagesWithMatchingImages"). getJSONObject(0).getString("url");

投稿2017/08/29 07:26

tride

総合スコア68

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問