Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6

В JSON строке содержится HTML, необходимо получить HTML разметку в приложении

17.12.2018, 18:00. Показов 2439. Ответов 11

Студворк — интернет-сервис помощи студентам
В JSON строке содержится HTML, необходимо получить HTML разметку в андройд приложении.
Получаю из API json строку, содержащую html разметку, пытаюсь запарсить её в java, но не выводится ровным счётом ничего.

Сам код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class ApiConnectTask1 extends AsyncTask<URL,Void,String> {
            @Override
            protected String doInBackground(URL... urls){
                String response2=null;
                try{
                    response2=getResponseFromURL(urls[0]);
                }catch (IOException e){
                    e.printStackTrace();
                }
                return response2;
            }
 
            @Override
            protected void onPostExecute(String response2){
                String sbaId=null;
                String sbaTitle=null;
                String sbaDate=null;
                String sbaShortDescription=null;
                String sbaFullDescription=null;
                try {
                    JSONObject jsonNews = new JSONObject(response2);
                    JSONArray jsonArray2 = jsonNews.getJSONArray("news");
                    String resultString2="";
                    for (int i=0;i<jsonArray2.length();i++){
                        JSONObject detailsInfo = jsonArray2.getJSONObject(i);
                        sbaId=detailsInfo.getString("id");
                        sbaTitle=detailsInfo.getString("title");
                        sbaDate=detailsInfo.getString("date");
                        sbaShortDescription=detailsInfo.getString("shortDescription");
                        sbaFullDescription=detailsInfo.getString("fullDescription");
                        resultString2+= sbaId+"\n"+sbaTitle+"\n"+sbaDate+"\n"+sbaShortDescription+"\n"+sbaFullDescription+"\n\n";
                    }
                    searchTextView1.setText(resultString2);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
    }
Логи:

12-17 17:57:14.388 21246-21246/com.pactuwka.myapplication W/System.err: org.json.JSONException: Value {"id":19,"title":"Единственная новость","date":"2016-08-03T11:15:21.104Z","shortDescription":"В этой категории только 1 новость, и это нормально","fullDescription":"<p>Полный текст новости <b>с жирным текстом<\/b>, <i>курсивом<\/i> и <a href="http:\/\/testtask.sebbia.com\/swagger-ui.html">одной ссылкой<\/a><\/p><p>Кроме того, в тексте два параграфа<\/p>"} at news of type org.json.JSONObject cannot be converted to JSONArray
12-17 17:57:14.389 21246-21246/com.pactuwka.myapplication W/System.err: at org.json.JSON.typeMismatch(JSON.java:100 )

Java
1
resultString2+= sbaId+"\n"+sbaTitle+"\n"+sbaDate+"\n"+sbaShortDescription+"\n"+sbaFullDescription+"\n\n";
В этой строке я пытаюсь просто вывести стринговскую строку, дабы убедиться в том, что всё работает.
Однако ничего не работает, хотя точно таким же способом получается парсить json без html.
Можете подсказать, что я делаю не так? Или подскажите ресурс где можно почитать о том как парсить html в джавку
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2018, 18:00
Ответы с готовыми решениями:

Можно ли получить html разметку?
Здравствуйте! Имеется страничка с таблицей &lt;table id=&quot;data&quot;&gt; Есть ли возможность, чтобы при нажатии на кнопку, html разметка этой таблицы...

Как через Html.ActionLink передать значение в другом Html-элементе в MVC-приложении?
как через Html.ActionLink передать значение в другом Html-элементе в MVC-приложении? Есть форма: &lt;input id=&quot;FileUpload&quot;...

Как получить в приложении данные из html формы?
Доброго времени суток. Интересует следующий вопрос: Есть приложение на pyqt, в котором присутствуют множественные поля для ввода данных....

11
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.12.2018, 18:05
jsonNews.getJSONArray("news"
где ты в этом json-е видишь массив news?
1
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
17.12.2018, 18:09  [ТС]
Вот отсюда.
JSON
1
{"code":0,"news":{"id":19,"title":"Единственная новость","date":"2016-08-03T11:15:21.104Z","shortDescription":"В этой категории только 1 новость, и это нормально","fullDescription":"<p>Полный текст новости <b>с жирным текстом</b>, <i>курсивом</i> и <a href=\"http://Ссылка\">одной ссылкой</a></p><p>Кроме того, в тексте два параграфа</p>"}}
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.12.2018, 18:33
очевидно news - не array
1
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
17.12.2018, 18:46  [ТС]
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
       class ApiConnectTask1 extends AsyncTask<URL,Void,String> {
            @Override
            protected String doInBackground(URL... urls){
                String response=null;
                try{
                    response=getResponseFromURL(urls[0]);
                }catch (IOException e){
                    e.printStackTrace();
                }
                return response;
            }
 
            @Override
            protected void onPostExecute(String response){
                String sbaId=null;
                String sbaTitle=null;
                String sbaDate=null;
                String sbaShortDescription=null;
                String sbaFullDescription=null;
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    JSONArray jsonArray = jsonObject.getJSONArray("news");
                    String resultString="";
                    for (int i=0;i<jsonArray.length();i++){
                        JSONObject detailsInfo = jsonArray.getJSONObject(i);
                        sbaId=detailsInfo.getString("id");
                        sbaTitle=detailsInfo.getString("title");
                        sbaDate=detailsInfo.getString("date");
                        sbaShortDescription=detailsInfo.getString("shortDescription");
                        sbaFullDescription=detailsInfo.getString("fullDescription");
                        resultString+= sbaId+"\n"+sbaTitle+"\n"+sbaDate+"\n"+sbaShortDescription+"\n"+sbaFullDescription+"\n\n";
                    }
                    searchTextView1.setText(resultString);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
    }
Если вы об этом, то и в таком виде ничего не отображается и вылетает с теми же логами

Добавлено через 5 минут
К слову, вот код работающего метода как надо.
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    class ApiConnectTask0 extends AsyncTask<URL,Void,String> {
        @Override
        protected String doInBackground(URL... urls) {
            String response = null;
            try {
                response = getResponseFromURL(urls[0]);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return response;
        }
        @Override
        protected void onPostExecute(String response) {
            String sbaId = null;
            String sbaName = null;
            try {
                JSONObject jsonList = new JSONObject(response);
                JSONArray jsonArray = jsonList.getJSONArray("list");
                String resultString = "";
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject categoryInfo = jsonArray.getJSONObject(i);
                    sbaId = categoryInfo.getString("id");
                    sbaName = categoryInfo.getString("name");
                    resultString += sbaId + "\n" + sbaName + "\n\n";
                }
                searchTextView0.setText(resultString);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
JSON
1
{"code":0,"list":[{"id":0,"name":"Много новостей"},{"id":1,"name":"Немного новостей"},{"id":2,"name":"Нет новостей"}]}
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.12.2018, 18:48
ты реально не видишь разницы в структуре этих json-ов?
скобки там квадратные и все такое
0
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
17.12.2018, 19:50  [ТС]
Кажется понял.
Из полученной строки
Java
1
 JSONObject jsonObject = new JSONObject(response);
нужно получить массив и из него получить ещё один массив, так ведь?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.12.2018, 19:55
pa4c, наркоман? где ты видишь массив?
1
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
17.12.2018, 20:39  [ТС]
Если бы понимал что и как, я бы не спрашивал у вас. Я лишь прошу ткнуть мне пальцем куда писать и объяснить, ибо не понимаю

Добавлено через 28 минут
Это было.. глупо.
Java
1
2
JSONObject jsonObject = new JSONObject(response);
JSONObject detailsInfo = jsonObject.getJSONObject("news");
Спасибо, что тыкнули (хоть я и долго понимал это).
Теперь главный вопрос. Как переписать этот метод, чтобы получить из этого HTML в приложении на android?

Добавлено через 5 минут
Что-то типо:
Берём <p>ПримерТекста</p> делаем то-то и получаем этот же ПримерТекста в виде html, а не тега и текста
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
17.12.2018, 21:25
Цитата Сообщение от pa4c Посмотреть сообщение
Берём <p>ПримерТекста</p> делаем то-то и получаем этот же ПримерТекста в виде html, а не тега и текста
HTML — это тэги и текст.
0
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
17.12.2018, 21:34  [ТС]
Имеется вот такой текст.
Кликните здесь для просмотра всего текста

И мне необходимо из него получить работающий html внутри приложения (объяснил как мог)
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.12.2018, 12:40
https://developer.android.com/... ing,%20int)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2018, 12:40
Помогаю со студенческими работами здесь

Пытаюсь получить html страницы через ajax, приходит json
Сам ajax: $.ajax({ type: &quot;GET&quot;, url: &quot;filter.html&quot;, dataType: 'html', ...

Подредактировать разметку HTML
Дратути. Экспортировал таблицу из Excel в HTML. Нужно подправить отображение полей, поле ввода и поле результата, чтоб было как в...

В div игнорировать html разметку
как сделать что бы в диве не воспринимался текст как html разметка?

Менять html разметку в зависимости от параметра
нужно изменить мета-теги (og:image, og:title, og:description), если на сайт пришли по ссылке с параметром, если нет - оставить дефолтные. ...

Как в JS вставить разметку HTML с содержимым PHP
$('.msg_content').append('&lt;div class=&quot;card to_card col-md-3 col-sm-3 col-lg-3&quot; style=&quot;float: left; margin-right: 7px; position: absolute;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru