当前位置: 首页 > 知识库问答 >
问题:

使用Java从OMDB(IMDB)API解码Java JSON

刘建中
2023-03-14

我想从OMDB API中获取电影数据,这是JSON文本。我正在使用Java来解码这个和包JSON-Simple。

我想解码的URL是这样的,例如:http://www.omdbapi.com/?t=icarus

结果(直接复制粘贴,不结构化):

{“Title”:“Icarus”,“Year”:“2010”,“Rated”:“TV-14”,“Released”:“2010年12月10日”,“Runtime”:“42分钟”,“Genre”:“冒险、戏剧、浪漫”,“导演”:“Mairzee Almas”,“编剧”:“Alfred Gough(创作人)”,Jerry Siegel(角色创作人:超人),Miles Millar(创作人),Joe Shuster(角色创作人:超人),Alfred Gough(为电视开发人),Miles Millar(为电视开发人),Genevieve Sparling,“演员”:“Tom Welling,Erica Durance,Cassidy Freeman,Justin Hartley”,“阴谋”:“随着VRA威胁加剧,克拉克采取主动,关闭了望塔,宣布联盟正式转入地下,但这是否足以阻止trotter和Slade Wilson。。。“,”Language“:”English“,”Country“:”USA“,”Awards“:”N/A“,”Poster“:”http://ia.media-imdb.com/images/M/MV5BMjIwNDQ2MjM5OV5BMl5BanBnXkFtZTcwODU4NzU0NA@@._V1_SX300。jpg”,“Metascore”:“N/A”,“imdbRating”:“8.6”,“imdbvows”:“367”,“imdbID”:“tt1628582”,“Type”:“eption”,“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)。

有人知道我为什么没有得到这部电影的片名吗?

共有2个答案

韦俊英
2023-03-14

谢谢Adam引导我走上正确的方向。我使用的是InputStream和Google Gson,而不是JSON。现在很简单。

这是我现在的代码,它按照我希望的方式工作。

        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);
    }
百里星纬
2023-03-14

您的代码正在解析以“http://”开头的字符串URL,因此h位于位置0。

您需要在该url发出HTTP GET请求才能取回JSON。

下面是如何发出GET请求的答案

 类似资料:
  • 我遇到了无法获取任何内容的问题,现在我获取了一些内容,但它是完全空的(null)。还有一件事,如果用GET解决了这个问题,我如何用HTML管理这个页面,比如很好地显示文本等等。? 代码如下: 类Appcontroller: Class Main应用程序: 班级响应: 这就是我在浏览器上得到的: 提供修复后: 新代码: 类AppController: Class Main应用程序: 班级响应: 类响

  • omdb 是一个采用 Ruby on Rails 开发的基于 Web 的多媒体管理系统。

  • 问题内容: 我正在尝试使用Gmail API来获取用户的电子邮件,获取邮件的主题和正文,然后将其显示在网页上。我将用它来做其他事情,但这是我遇到的困难。我正在使用Angular.js。 这是我的API调用: 因此,返回我的消息数组及其ID号。很好 调用输出this- 。 不确定是什么,但尝试获取消息有效负载(),结果为。那么,如何获得消息内容? 另外,我假设如果我可以获取消息内容,那么我将不得不对

  • 我正在使用Java读取Salesforce环境中的所有对象,工作正常,但下面的代码需要10分钟才能将JSON转换为Java ArrayList。我在考虑是否可以使用Java-8流API来并行解析逻辑。以下是我的工作代码,如有任何建议,不胜感激。

  • 我正在尝试使用Android上的MediaCodec API来解码AAC流。(它是原始AAC。)我尝试使用MediaFormat.createAudioFormat()来创建要传递给MediaCodec.configure()的格式对象,但我在使用AAC(音频/mp4a-latm)时一直出错。(不过它适用于MP3(音频/mpeg)...) 最后,我为一个AAC文件创建了一个MediaExtract

  • 我正在开发一个使用MediaCodec API的H.264解码器。我试图在JNI层中调用MediaCodec java API,该函数如下所示: 稍后,我将把发送到我现有的视频呈现管道,并在上呈现。 我希望我能够编写一个Java函数来解码输入流,但这些将是一个挑战- 此资源声明- …你不能对解码的视频帧做任何事情,只能将它们呈现在表面 这里,一个已被传递在表面上呈现输出并且声明。 那么,我是否能够