Заполнить jtable с помощью sparql, получая строку формата json

Я пытаюсь заполнить jtable данными json. Я пробовал какое-то решение, например

String json = "
ObjectMapper mapper = new ObjectMapper();
 List<User> users = mapper.readValue(json,TypeFactory.defaultInstance().constructCollectionType(List.class, User.class));
UserTableModel model = new UserTableModel(users);
 tableSkill = new JTable(model);

но eclipse выдает ошибку и просит меня создать класс User и User TableModel, поэтому я искал файл jar, чтобы импортировать его, чтобы решить эту проблему, но я не нашел его. кто-нибудь может мне помочь и сказать мне, в чем моя ошибка

... есть ли пользователь класса Java ?! А UserTableModel?

UninformedUser 04.06.2018 14:38

Я это не создаю. Я видел пример, когда программист создал класс User, адаптированный с данными json. но в моем случае я не знаю, какими будут эти данные, потому что данные зависят от результата запроса sparql. Я нашел это (st.inf.tu-dresden.de/SalesPoint/v3.3/documentation/javadoc/‌…), но не знаю, как им пользоваться

marco 04.06.2018 15:02

Но тогда как код должен компилировать классы без ?! И если вы не знаете результат запроса SPARQL, как вы хотите отобразить его на объект домена, представленный в форме класса Java? Я не понимаю этого. Java должна скомпилировать код, прежде чем вы сможете его запустить, поэтому класс должен существовать до того, как вы запустите запрос SPARQL. Я не знаю, чего вы пытаетесь достичь ... представление результата запроса SPARQL в виде таблицы тривиально, учитывая, что, по крайней мере, для запросов SELECT это в основном набор результатов, который является более или менее набором привязок, которые также могут быть рассматривается как набор строк.

UninformedUser 04.06.2018 15:54

Прежде всего спасибо за ваш ответ. Я постараюсь создавать свои классы. Могу я спросить вас, как можно отобразить результаты "не json" обычного "select" в jTable? Я использую эту функцию, чтобы применить свой запрос public String runQuery (Model m, String q) {Query query = ARQFactory.get (). CreateQuery (model, queryString); попробуйте (QueryExecution qexec = ARQFactory.get (). createQueryExecution (запрос, модель)) {ResultSet actualResults = qexec.execSelect (); ByteArrayOutputStream os = новый ByteArrayOutputStream (); ResultSetFormatter.outputAsJSON (os, actualResults); вернуть os.toString ();

marco 04.06.2018 16:21

у вас есть ResultSet. Каждый QuerySolution в нем имеет привязки переменных. Создайте модель таблицы с этим

UninformedUser 04.06.2018 20:03
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
61
1

Ответы 1

Вот решение, которое позволяет избежать использования User и User TableModel:

public void runQuerytotable(Model model, String queryString, JTable table,int columns) {
    Query query = ARQFactory.get().createQuery(model, queryString);
    QueryExecution qexec = ARQFactory.get().createQueryExecution(query, model);
    ResultSet rs = qexec.execSelect();
    DefaultTableModel m = (DefaultTableModel) table.getModel();
    m.setColumnCount(columns); 
    String[] columnsName = {"URI","label"};
    m.setColumnIdentifiers(columnsName);
    while(rs.hasNext()) {   
        QuerySolution sol = rs.nextSolution();
        RDFNode URI = sol.get("s"); 
        RDFNode Label = sol.get("o"); 

        m.addRow(new Object[]{URI,Label});
    }
} 

Другие вопросы по теме