Как использовать 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