Java: добавить ответ JSON (строка за строкой) в JTable - PullRequest
0 голосов
/ 20 февраля 2019

Я делаю Java-приложение для школы, в котором я хочу получать данные из API в формате JSON.Точнее, я получаю список объектов.Каждый объект содержит данные об одной вещи, скажем, данные фильма.

Возвращенные данные выглядят следующим образом: {"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);

Теперь я немного застрял.Куда мне идти отсюда?

1 Ответ

0 голосов
/ 20 февраля 2019

Наилучшим способом будет следовать шаблон проектирования MVC и создать класс для представления этих строк JSON в объектах.Затем используйте уже существующую библиотеку для анализа значений в объекте.Наиболее распространенной (я думаю) библиотекой для этой работы является GSON.

После этого вместо некоторых строк 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.

Наконец: Вы прочитали этот вопрос и все ваши проблемы решены.Чистый и мягкий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...