2

JSON テキストである OMDB API から動画データを取得したいと考えています。Java を使用してこれとパッケージ JSON-simple をデコードしています。

デコードしたい URL は、たとえばhttp://www.omdbapi.com/?t=icarusです。

結果 (構造化せずに直接コピー アンド ペースト):

{"タイトル":"イカロス","年":"2010","定格":"TV-14","リリース":"2010年12月10日","実行時間":"42分","ジャンル": 「アドベンチャー、ドラマ、ロマンス」、「監督」:「メアジー・アルマス」、「脚本」:「アルフレッド・ゴフ(クリエイター)、ジェリー・シーゲル(キャラクター作成:スーパーマン)、マイルズ・ミラー(クリエイター)、ジョー・シャスター(キャラクター作成) : スーパーマン)、アルフレッド・ゴフ (テレビ向けに開発)、マイルズ・ミラー (テレビ向けに開発)、ジェネビーブ・スパーリング」、「俳優」:「トム・ウェリング、エリカ・デュランス、キャシディ・フリーマン、ジャスティン・ハートリー」、「プロット」:「 VRA の脅威が強まると、クラークは監視塔を閉鎖し、リーグが正式に地下に行くことを宣言することで主導権を握ります。しかし、トロッターとスレイド・ウィルソンを止めるにはこれで十分でしょうか...","Language":"English","Country":"USA","Awards":"N/A","Poster":"","メタスコア":"N/A"," imdbRating ":"8.6","imdbVotes":"367" ,"imdbID":"tt1628582","Type":"episode","Response":"True"}

私のボタンの下のコード:

        String url = "http://www.omdbapi.com/?t=" + jListFilms.getSelectedValue().toString();

    try {
        JSONParser parser = new JSONParser();
        Object obj = parser.parse(url);
        JSONObject jsonObj = (JSONObject) obj;

        String title = (String) jsonObj.get("Title") ;
        System.out.println(title);

    } catch (ParseException e){
        System.out.println(e);
    }

変数のタイトルを出力すると

位置 0 に予期しない文字 (h) があります。

なぜ私が映画のタイトルを取得しないのか知っている人はいますか?

4

2 に答える 2

1

コードが行っているのは、「http://」で始まる文字列 URL を解析しているため、位置 0 の h です。

JSON を取得するには、その URL で HTTP GET 要求を発行する必要があります。

GETリクエストの発行方法についての回答は次のとおりです

于 2014-05-30T18:35:35.747 に答える
1

私を正しい方向に導いてくれたアダムに感謝します。JSON.Simple の代わりに InputStream と Google Gson を使用しています。

これは私のコードであり、私が望んでいた方法で動作します。

        try {

        String selectedItem = jListFilms.getSelectedValue().toString().replace("\\s+", "+");

        InputStream input = new URL("http://www.omdbapi.com/?t=" + URLEncoder.encode(selectedItem, "UTF-8")).openStream();
        Map<String, String> map = new Gson().fromJson(new InputStreamReader(input, "UTF-8"), new TypeToken<Map<String, String>>(){}.getType());

        String title = map.get("Title");
        String year = map.get("Year");
        String released = map.get("Released");
        String runtime = map.get("Runtime");
        String genre = map.get("Genre");
        String actors = map.get("Actors");
        String plot = map.get("Plot");
        String imdbRating = map.get("imdbRating");
        String poster = map.get("Poster");

        testForm tf = new testForm(title, year, released, runtime, genre, actors, plot, imdbRating);
        tf.setVisible(true);

    } catch (JsonIOException | JsonSyntaxException | IOException e){
        System.out.println(e);
    }
于 2014-05-30T20:56:01.313 に答える