繁体   English   中英

Java:将JSON响应(逐行)添加到JTable

[英]Java: Add JSON response (line by line) to JTable

我正在为学校制作一个Java应用程序,我想在其中从JSON格式的API中获取数据。 更准确地说,我获取对象列表。 每个对象都包含有关一件事的数据,比方说电影数据。

返回的数据如下所示: {"page":1,"total_results":102,"total_pages":6,"results":[{"vote_count":13240,"id":597,"video":false,"vote_average":7.8,"title":"Titanic"}]}

现在,对于“结果”中每一行电影,我想在JTable显示名称。 现在,代码如下所示:

String text = searchField.getText();
String url = "https://api.themoviedb.org/3/search/movie?api_key=SECRET&query=" + URLEncoder.encode(text, "UTF-8");
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

int responseCode = con.getResponseCode();

BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

String inputLine;
StringBuffer buffer = new StringBuffer();
while((inputLine = in.readLine()) != null)
{
     buffer.append(inputLine);
}
in.close();


DefaultTableModel table = new DefaultTableModel();
table.addColumn("Title");
jTable.setModel(table);

现在我有点卡住了。 我从这里去哪里?

最好的方法是遵循MVC设计模式并创建一个类,以便将这些JSON行表示为Objects。 然后使用现有的库将值解析为对象。 我认为最常见的库是GSON。

之后,您将获得带有属性的Object,而不是一些JSON行。 让我们来看一个例子:

假设您获得如下(人员)的JSON行:

{"name":John, "age":34}

现在,您无需创建此类字符串,而创建一个Person类:

public class Person {
    private String name;
    private int age;

    public Person() {
        // JSON parsers need a declared default (no argument) constructor
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

然后用一个简单的方法:

Gson gson = new GsonBuilder().create();
Person p = gson.fromJson(myJsonString, Person.class);

您有一个使用此JSON字符串的值的人。

最后:您阅读了此问题 ,所有问题均已解决。 干净柔软。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM