Member 14092346 Ответов: 1

Как использовать jsontoken в android studio?


У меня есть веб-сервис для отображения состояния света, и я пытаюсь восстановить значение состояния с помощью JSONObject, а когда я использую JSONToken для возврата значения JSONObjact, я получаю "null".

Так же есть исключение JSONException.

Вот мой код для MyAsyncTasks():
public class MyAsyncTasks extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... strings) {
            HttpHandler sh = new HttpHandler();

            String current = "";
            try {
                URL ApiUrl;
                HttpURLConnection urlConnection = null;
                try {
                    ApiUrl = new URL(apiUrl);
                    urlConnection = (HttpURLConnection) ApiUrl.openConnection();
                    instring = urlConnection.getInputStream();
                    progressDialog.dismiss();
         
                    JSONObject  c=  parseInputStream(instring);

                    try {
                        for (int i = 0; i < c.length(); i++)
                            status = (int) c.get(String.valueOf(Integer.parseInt(String.valueOf(status))));

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                    if (status == 0) {
                        Button1.setBackgroundColor(Color.RED);
                    } else {
                        Button1.setBackgroundColor(Color.GREEN);
                    }

                    return "";

                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (urlConnection != null) {
                        urlConnection.disconnect();
                    }
                }

            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
            return"";
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setMessage("Please Wait");
            progressDialog.setCancelable(false);

        }


        InputStream instring;

        public static JSONObject  parseInputStream(InputStream inputStream) {

            BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder StrBuilder = new StringBuilder();
            JSONObject  jsonObject =  null;
            String currentline;
            try {
                while ((currentline = streamReader.readLine()) != null) {
                    StrBuilder.append(currentline);
                }

                JSONTokener jsonTokener = new JSONTokener(StrBuilder.toString());
                jsonObject = new JSONObject (jsonTokener);
            } catch (IOException error) {

            } catch (JSONException e) {
                e.printStackTrace();
            }

            
            return jsonObject;


        }
И моя служба похожа на:
<string xmlns="http://tempuri.org/">
[ { "id": 3, "name": "light1", "status": "1" }, { "id": 4, "name": "light2", "status": "1" }, { "id": 5, "name": "light3", "status": "1" }, { "id": 6, "name": "light4", "status": "1" } ]


Что я уже пробовал:

Поскольку я новичок в Android, я понятия не имею, что нужно использовать вместо JSONToken.

CHill60

Вам удалось дважды задать один и тот же вопрос. Может быть, стоит удалить вот это

Richard MacCutchan

Я уже удалил дубликат.

Richard MacCutchan

В чем же состоит исключение? Каково содержание строки, передаваемой в метод JSONTokener?

Member 14092346

Когда я назначаю JSONToken JSONObject, в строке,

jsonObject = new JSONObject (jsonTokener); когда эта строка выполняется, она переходит в блок catch JSONException, и значение, которое я получаю, равно e={JSONException@5300}...toString()

Здесь я использовал .net SOAP webservice

1 Ответов

Рейтинг:
2

mehr.ah

вы должны привести - преобразовать назначенное значение в целевое значение .
поиск различных типов структуры данных json .
массив json отличается от объекта json.