Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
#1

простенький json - Программирование Android

19.10.2015, 16:26. Просмотров 371. Ответов 13
Метки нет (Все метки)

на сервере имеется код:
PHP
1
2
if ($id>0) {"data":[{"isRegistered":"True"}]}
else {"data":[{"isRegistered":"False"}]}
Запрос с мобильного должен идти в виде GET запроса, а результат должен записаться в виде переменной. Не подскажите какой нибудь очень простенький код (без отображения принятых данных).

Буду особо благодарен если посоветуете библиотеку для парсинга Json.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2015, 16:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос простенький json (Программирование Android):

Ошибка - Errororg.json.JSONExceprion: Value bd.json of type java.lang.String cannot be converted to JSONObject - Программирование Android
Здравствуйте! Есть база данных bd.json, которая находится в проекте в папке assets. Вот содержимое базы данных; { "name":...

Android, простенький калькулятор - Программирование Android
Добрый день! Пишу на андроиде только 2 часа, по-этому ещё многое не понятно. В общем задача проста - написать простенький калькулятор....

Простенький текстовый редактор - Программирование Android
Нужно написать простенький текстовый редактор. Хочу сделать почти на всё Активити editText, но внизу надобно, чтоб отображалось сколько...

Создать простенький английско-украинский переводчик - Программирование Android
Помогите создать простенький английско-украинский переводчик. Чтобы переводил слово. до послезавтра нужно сделать дизайн

JSON - Программирование Android
В продолжение моей борьбы с json, поделитесь полезными ссылками для изучения, буду очень признателен. И вот вопрос, у меня есть массив...

Парсер JSON - Программирование Android
C помощью Jsoup парсю JSON страницу и кодировка не работает пишет тупо вопросики. Как исправить? Второй вопрос, как мне вытаскивать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
19.10.2015, 17:44 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
bako-95,
Java
1
boolean isRegistered = new JSONObject(response).getJSONObject ("data").getBoolean("isRegistered");
как-то так, проверьте, на коленке писал.

Библиотеки для парсинга: Jackson, GSON
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
22.10.2015, 15:33  [ТС] #3
А что насчет такого кода?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 try {
                    JSONObject json = new JSONObject("http://autostop.net76.net/register2.php?" + emailSend);
                    JSONArray urls = json.getJSONArray("data");
 
                       String hm = urls.getJSONObject(0).getString("isRegsitered").toString();
                        if (hm.equals("False"))
                        {
                            iCan = 1;
                        }
                    Log.d("myLog", hm);
                    }
                 catch (JSONException e) {
                    Log.e("myLog", "Error parsing data " + e.toString());
                }
но он вызывает ошибку

Код
Error parsing data org.json.JSONException: Value http of type java.lang.String cannot be converted to JSONObject
Кажется я что-то не туда написал
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 584
22.10.2015, 15:49 #4
bako-95,
Java
1
2
 JSONObject statusAll = new JSONObject();
 statusAll.put("cyber", "forum");
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
23.10.2015, 11:48 #5
bako-95, нет, так не катит. Сначала запрос надо сделать, получить результат, а потом его в конструктор JSONObject.
_Night_Scream_, вместо того, чтобы писать бред не относящийся к теме, лучше не пишите вовсе.
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
28.10.2015, 18:18  [ТС] #6
YuraAAA,
Сделал как вы посоветовали, плюс добавил кое-что:
Кликните здесь для просмотра всего текста
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class TestEmailTask extends AsyncTask<String, String, String> {
 
        String JSON_STRING;
        EditText email = (EditText) findViewById(R.id.e_mail);
        String emailSend = email.getText().toString();
    String Json_url= "http://autostop.net76.net/register2.php?e_mail=" + emailSend;
        Integer iCan = 0;
 
        @Override
        protected String doInBackground(String... params) {
            try {
                URL url = new URL(Json_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                StringBuilder stringBuilder = new StringBuilder();
                while ((JSON_STRING = bufferedReader.readLine())!=null)
                {
                    stringBuilder.append(JSON_STRING);
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return stringBuilder.toString().trim();
            }
            catch (IOException e)
            {
                e.printStackTrace();
                Log.e("myLog", "Error " + e.toString());
            }
            return null;
        }
 
        @Override
        protected void onPostExecute(String result) {
            boolean isRegistered = false;
            try {
 
                isRegistered = new JSONObject(result).getJSONObject("data").getBoolean("isRegistered");
            } catch (JSONException e) {
                e.printStackTrace();
                Log.e("myLog", "Error " + e.toString());
            }
            Log.d("myLog", "isRegistered to iCan"+result);
            if(isRegistered=true){//mt = new RegisterTask();
                //mt.execute();
                Toast toast = Toast.makeText(getApplicationContext(),
                        "Данный электронный адрес ещё не зарегистрирован ", Toast.LENGTH_SHORT);
                toast.show();
            }
            else {Toast toast = Toast.makeText(getApplicationContext(),
                    "Данный электронный адрес уже зарегистрирован ", Toast.LENGTH_SHORT);
                toast.show();}
 
            dialog.dismiss();
            super.onPostExecute(result);
        }
 
        @Override
        protected void onPreExecute() {
 
            dialog = new ProgressDialog(MainActivity.this);
            dialog.setMessage("Загружаюсь...");
            dialog.setIndeterminate(true);
            dialog.setCancelable(true);
            dialog.show();
            super.onPreExecute();
        }
    }


Но столкнулся с небольшой ошибкой. А в логах
Код
10-28 20:10:41.343    3303-3303/com.ww4u.barter E/myLog﹕ Error org.json.JSONException: Value data of type java.lang.String cannot be converted to JSONObject
10-28 20:10:41.343    3303-3303/com.ww4u.barter D/myLog﹕ isRegistered to iCan"data":[{"isRegistered":"False"}]  <!-- Hosting24 Analytics Code --><script type="text/javascript" src="http://stats.hosting24.com/count.php"></script><!-- End Of Analytics Code -->
Я так полагаю проблема в
Код
<!-- Hosting24 Analytics Code --><script type="text/javascript" src="http://stats.hosting24.com/count.php"></script><!-- End Of Analytics Code -->
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
28.10.2015, 18:27 #7
bako-95, дайте URL по которому Вы обращаетесь
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
28.10.2015, 18:28  [ТС] #8
YuraAAA,
Без get запроса http://autostop.net76.net/register2.php
с gethttp://autostop.net76.net/register2....ako-95@mail.ru
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
28.10.2015, 18:37 #9
bako-95, нет, там чистый json. Значит запрос неправильно делаете
Цитата Сообщение от bako-95 Посмотреть сообщение
while ((JSON_STRING = bufferedReader.readLine())!=null)
* * * * * * * * {
* * * * * * * * * * stringBuilder.append(JSON_STRING);
* * * * * * * * }
посмотрите в дебаге что тут лежит.
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
28.10.2015, 19:01  [ТС] #10
YuraAAA,
если так:
Java
1
2
3
4
5
while ((JSON_STRING = bufferedReader.readLine())!=null)
                {
                    stringBuilder.append(JSON_STRING);
                    Log.d("myLog", "проверка JSON_STRING" + JSON_STRING);
                }
то
Код
10-28 21:58:38.415  29764-30469/com.ww4u.barter D/myLog﹕ проверка JSON_STRING"data":[{"isRegistered":"False"}]
10-28 21:58:38.415  29764-30469/com.ww4u.barter D/myLog﹕ проверка JSON_STRING<!-- Hosting24 Analytics Code -->
10-28 21:58:38.415  29764-30469/com.ww4u.barter D/myLog﹕ проверка JSON_STRING<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
10-28 21:58:38.415  29764-30469/com.ww4u.barter D/myLog﹕ проверка JSON_STRING<!-- End Of Analytics Code -->
10-28 21:58:38.452  29764-29764/com.ww4u.barter E/myLog﹕ Error org.json.JSONException: Value data of type java.lang.String cannot be converted to JSONObject
10-28 21:58:38.452  29764-29764/com.ww4u.barter D/myLog﹕ isRegistered to iCan"data":[{"isRegistered":"False"}]  <!-- Hosting24 Analytics Code --><script type="text/javascript" src="http://stats.hosting24.com/count.php"></script><!-- End Of Analytics Code -->
Добавлено через 17 секунд
YuraAAA,
если так:
Java
1
2
3
4
5
while ((JSON_STRING = bufferedReader.readLine())!=null)
                {
                    stringBuilder.append(JSON_STRING);
                    Log.d("myLog", "проверка JSON_STRING" + JSON_STRING);
                }
то
Код
10-28 21:58:38.415  29764-30469/com.ww4u.barter D/myLog﹕ проверка JSON_STRING"data":[{"isRegistered":"False"}]
10-28 21:58:38.415  29764-30469/com.ww4u.barter D/myLog﹕ проверка JSON_STRING<!-- Hosting24 Analytics Code -->
10-28 21:58:38.415  29764-30469/com.ww4u.barter D/myLog﹕ проверка JSON_STRING<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
10-28 21:58:38.415  29764-30469/com.ww4u.barter D/myLog﹕ проверка JSON_STRING<!-- End Of Analytics Code -->
10-28 21:58:38.452  29764-29764/com.ww4u.barter E/myLog﹕ Error org.json.JSONException: Value data of type java.lang.String cannot be converted to JSONObject
10-28 21:58:38.452  29764-29764/com.ww4u.barter D/myLog﹕ isRegistered to iCan"data":[{"isRegistered":"False"}]  <!-- Hosting24 Analytics Code --><script type="text/javascript" src="http://stats.hosting24.com/count.php"></script><!-- End Of Analytics Code -->
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
28.10.2015, 19:29 #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
bako-95, проблема в сервер-сайде. он должен генерировать только (!) JSON. Без скриптов. Смотрите что он выдаёт,

HTML5
1
2
3
4
"data":[{"isRegistered":"True"}]  
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
28.10.2015, 19:47  [ТС] #12
YuraAAA, Прелести бесплатного хостинга
как думаете, replaceAll здесь справится?
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
28.10.2015, 20:54 #13
bako-95, держите:

Java
1
2
3
public String removeScripts(String data) {
        return data.substring(0, data.indexOf("<!--")).trim();
    }
Добавлено через 2 минуты
Не панацея конечно, но поможет
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
29.10.2015, 08:49 #14
я бы отстрелил по "возврату каретки".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2015, 08:49
Привет! Вот еще темы с ответами:

Парсинг JSON - Программирование Android
Дали задание Мне надо воссоздать структуру JSON в сообственных объектах. Т.е. парсить надо не в String (например), а сделать вот что: -...

Json Parsing - Программирование Android
Здравствуйте.я попытаться разобрать JSON и показать элемент в listview.Программа работает, но я хочу показать все элементы на нажатие...

Json djangorestframework - Программирование Android
Здравствуйте есть сайт с которого нужно получить json 52.24.128.34:8000/api/tasks/?format=json json вида в примере по использованию...

Неверный JSON - Программирование Android
Подскажите пожалуйста споткнулся вроде на ровном месте exit(json_encode($newArray)); Так выдаю данные для приложения ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.10.2015, 08:49
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru