Java:将JSON响应(逐行)添加到JTable
我正在为学校制作一个Java应用程序,我想从JSON格式的API获取数据。更准确地说,我获取一个对象列表。每个对象都包含关于一件事的数据,比如说电影数据 返回的数据如下所示:Java:将JSON响应(逐行)添加到JTable,java,swing,api,jtable,Java,Swing,Api,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”}} 现在,对于“结果”中的每一行电影,我想在JTab
{“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);
现在我有点困了。我该从这里走到哪里?最好的方法是遵循并创建一个类,以便将这些JSON行表示为对象。然后使用已有的库将值解析到对象中。对于这项工作,最常见的(我认为)图书馆是 之后,您将拥有具有属性的对象,而不是一些JSON行。让我们看一个例子: 假设您得到的JSON行(人)如下所示:
{“姓名”:约翰,“年龄”: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字符串的值
最后:你读了,所有的问题都解决了。干净柔软。可能是定制的
表格模型,如或。