Разбор json в Java android studio

#java #android #json

#java #Android #json

Вопрос:

У меня есть этот код для разбора json на Java, но проблема в том, что мой json выглядит следующим образом

 {"ime":"Alen","prezime":"Osmanagiu0107","test":[1,2,3,4,5],"test2":{"1":"test","2":"555","test":"888","om":"hasd"}}
  

И мой Java-код для синтаксического анализа выглядит следующим образом :

 protected void onPostExecute(String result) {
        pDialog.dismiss();
        runOnUiThread(new Runnable() {
            public void run() {

                ListView listView =(ListView)findViewById(R.id.jsonList);
                if ( true) {
                    try {
                       JSONArray mojNiz = response.getJSONArray("");

                        List<JSON> noviJSON = new ArrayList<>();
                        //Popuniti podacima
                        for (int i = 0; i < mojNiz.length(); i  ) {
                            JSON jsonObj = new JSON();
                            JSONObject mojObj = mojNiz.getJSONObject(i);
                            jsonObj.setIme(mojObj.getString(KEY_NAME));
                           // jsonObj.setPrezime(mojObj.getString(KEY_DOB));
                          //jsonObj.setPrezime(mojObj.getString(KEY_DESIGNATION));
                            noviJSON.add(jsonObj);
                        }

                        adapter = new Adapter(noviJSON, getApplicationContext());

                        listView.setAdapter(adapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                } else {
                    Toast.makeText(MainActivity.this,
                            "Problem u loadiranjuz podataka",
                            Toast.LENGTH_LONG).show();

                }
  

Как я могу разобрать эту конкретную строку json???

Комментарии:

1. Это не самый эффективный способ разбора JSON. Создайте POJOS и используйте GSON, и пусть GSON сделает синтаксический анализ за вас. Взгляните на этот блог. mkyong.com/java /…

Ответ №1:

Сначала получите JSONObject, а затем массив внутри него

 JSONObject jsonObject = new JSONObject(jsonString);
String objectIme = jsonObject.getString("ime");
String prezime = jsonObject.getString("prezime");
  

В приведенной выше строке будет получен весь объект, и из этого объекта вы можете получить другие объекты и массив test1 и test2, как показано ниже, затем вы можете выполнить цикл по этому массиву, как вы это делали

     JSONArray jArray1 = new JSONArray(jsonObject.getJSONArray("test1"));
    JSONArray jArray2 = new JSONArray(jsonObject.getJSONArray("test2"));

 for (int i = 0; i < jArray1 .length(); i  ) {
                            JSON jsonObj = new JSON();
                            JSONObject mojObj = jArray1.getJSONObject(i);
                            jsonObj.setIme(mojObj.getString(KEY_NAME));

                        }
  

Ответ №2:

Вы неправильно разбираете свой json. Ваш json начинается с JSONObject вместо JSONArray. Итак, в вашем случае вы должны начать так (при условии, что ваша результирующая переменная метода onPostExecute содержит строку json)

 JSONObject mojNiz = new JSONObject(result);
  

Теперь из приведенного выше mojNiz объекта вы можете получить свой массив json

Комментарии:

1. json не может быть URL.

Ответ №3:

 String s = "{"ime":"Alen","prezime":"Osmanagi\u0107","test":[1,2,3,4,5],"test2":{"1":"test","2":"555","test":"888","om":"hasd"}}";
    try {
        JSONObject jsonObject = new JSONObject(s);
        jsonObject.getString("ime");
        jsonObject.getString("prezime");

        JSONArray jsonArray = jsonObject.getJSONArray("test");

        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < jsonArray.length(); i  ) {
            list.add((Integer) jsonArray.get(i));

        }

        JSONObject testObject = jsonObject.getJSONObject("test2");
        testObject.getString("1");
        testObject.getString("2");

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