0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
1

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

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

Author24 — интернет-сервис помощи студентам
В 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2018, 18:00
Ответы с готовыми решениями:

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

Как через Html.ActionLink передать значение в другом Html-элементе в MVC-приложении?
как через Html.ActionLink передать значение в другом Html-элементе в MVC-приложении? Есть форма:...

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

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

11
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.12.2018, 18:05 2
jsonNews.getJSONArray("news"
где ты в этом json-е видишь массив news?
1
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
17.12.2018, 18:09  [ТС] 3
Вот отсюда.
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 4
очевидно news - не array
1
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
17.12.2018, 18:46  [ТС] 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
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 6
ты реально не видишь разницы в структуре этих json-ов?
скобки там квадратные и все такое
0
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
17.12.2018, 19:50  [ТС] 7
Кажется понял.
Из полученной строки
Java
1
 JSONObject jsonObject = new JSONObject(response);
нужно получить массив и из него получить ещё один массив, так ведь?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.12.2018, 19:55 8
pa4c, наркоман? где ты видишь массив?
1
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 6
17.12.2018, 20:39  [ТС] 9
Если бы понимал что и как, я бы не спрашивал у вас. Я лишь прошу ткнуть мне пальцем куда писать и объяснить, ибо не понимаю

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

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

И мне необходимо из него получить работающий html внутри приложения (объяснил как мог)
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.12.2018, 12:40 12
https://developer.android.com/... ing,%20int)
0
18.12.2018, 12:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2018, 12:40
Помогаю со студенческими работами здесь

Подредактировать разметку 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;...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru