Как анализировать массивы Json внутри массивов Json без ключа

Привет, я использую анализ json, ниже мой ответ json. Может ли кто-нибудь помочь мне с разбором,

{"success":

"{"mydata":

[
["Ramesh","Architect","Surat","1","2011/04/25","$123,123"], 
["Suresh Ram","Accountant","Amdavad","2","2011/07/25","$121,121"],
["Naresh","Author","Up","3","2009/01/12","$76,000"],

........

Мое замешательство связано с синтаксическим анализом, ответ очень сложен для анализа.


person chris    schedule 24.11.2018    source источник
comment
Возможный дубликат Разбор массива JSON без ключа в Android   -  person Nagendra Hari Karthick    schedule 24.11.2018


Ответы (2)


Я надеюсь, что вы можете легко получить успешный объект json, поэтому я напрямую использую здесь jobSuccess.

   ArrayList<DataModel> arrDataModel=new ArrayList<DataModel>();
        try {
            JSONArray jarMyData=jobSuccess.getJSONArray("mydata");
            for (int i = 0; i < jarMyData.length(); i++) {
                JSONArray jar = jarMyData.getJSONArray(i);

                    DataModel dataModel=new DataModel();
                    dataModel.name=jar.getString(0);
                    dataModel.occupation=jar.getString(1);
                    dataModel.place=jar.getString(2);
                    dataModel.id=jar.getString(3);
                    dataModel.date=jar.getString(4);
                    dataModel.price=jar.getString(5);
                    arrDataModel.add(dataModel);
            }
        }catch (JSONException e)
        {
            Log.d("JSONException",e.toString());
        }

Вы можете создать класс модели следующим образом:

public class DataModel {
    String name, occupation, place, id, date, price;
}

Примечание: я не уверен в названии полей, поэтому измените их имя в соответствии с вашими потребностями.

Обновить Чтобы получить jobSuccess, вам необходимо:

String response="your json response in string format";
JSONObject jobSuccess=new JSONObject(response).getJSONObject("success");

Обновление 2

  // response is the json object you received from volley
            jobSuccess=response.getJSONObject("TABLE_DATA");

            ArrayList<DataModel> arrDataModel=new ArrayList<DataModel>();
            try {
// **Change below statement only**
                JSONArray jarMyData=new JSONObject(jobSuccess.getString("TABLE_DATA"));
                for (int i = 0; i < jarMyData.length(); i++) {
                    JSONArray jar = jarMyData.getJSONArray(i);

                        DataModel dataModel=new DataModel();
                        dataModel.name=jar.getString(0);
                        dataModel.occupation=jar.getString(1);
                        dataModel.place=jar.getString(2);
                        dataModel.id=jar.getString(3);
                        dataModel.date=jar.getString(4);
                        dataModel.price=jar.getString(5);
                        arrDataModel.add(dataModel);
                }
            }catch (JSONException e)
            {
                Log.d("JSONException",e.toString());
            }

Обновить последнее Вам нужно изменить это:

JSONObject jobSuccess=response.getJSONObject("TABLE_DATA");

с этим:

JSONArray jarMyData=new JSONObject(jobSuccess.getString("TABLE_DATA"));
person Suraj Vaishnav    schedule 24.11.2018
comment
спасибо за ваш ответ, но вы поможете мне создать класс модели для этого - person chris; 24.11.2018
comment
что такое работа - person chris; 24.11.2018
comment
jobSuccess - это объект json, который вы получаете от ключа успеха из вашего ответа json. - person Suraj Vaishnav; 24.11.2018
comment
но не дает возможности для jsonboject с данными - person chris; 24.11.2018
comment
я не понял - person Suraj Vaishnav; 24.11.2018
comment
можете ли вы сказать, как вы установите jsonobject для работы - person chris; 24.11.2018
comment
я получаю исключение org.json.JSONException: значение {mydata: - person chris; 24.11.2018
comment
здесь для меня заблокирован чат, пообщаешься со мной? - person chris; 24.11.2018
comment
Невозможно перейти в окно чата, загрузите куда-нибудь свой ответ в формате json, поделитесь ссылкой и добавьте ошибку log cat на свой вопрос. - person Suraj Vaishnav; 24.11.2018
comment
да, но проблемы из-за косой черты ... и еще одна вещь, мой ответ в формате Jsonobject. я использую залп - person chris; 24.11.2018
comment
это будет работать нормально, косые черты просто появляются, когда вы печатаете ответ - person Suraj Vaishnav; 24.11.2018
comment
нет, сэр, до сих пор не решено "> stackoverflow.com/questions/53458894/ - person chris; 24.11.2018
comment
вы проверили, почему я получаю исключение - person chris; 24.11.2018
comment
@chris проверьте последнее обновление в моем ответе и дайте мне знать, если у вас возникнут какие-либо проблемы - person Suraj Vaishnav; 24.11.2018

вот как вы можете добиться этого в Котлине.

val obj = JSONObject(response)

        val arrayOfArrays = obj.getJSONArray("mydata")

        repeat(arrayOfArrays.length()){index->
            val innerArray = arrayOfArrays.getJSONArray(index)
            //either get the fields by their index
            val name = innerArray.getString(0) //Ramesh
            val field = innerArray.getString(1)//Architect
            val third = innerArray.getString(2)//Surat
            val id = innerArray.getString(3)//1
            val date = innerArray.getString(4)//2011/04/25
            val price = innerArray.getString(5)//$123,123
            //or loop through the inner array
            repeat(innerArray.length()){
                //your inner array fields
            }
        }

предложение:

  1. попросите вашего бэкэнд-разработчика предоставить вам список объектов вместо массива строк.

  2. используйте библиотеку синтаксического анализа JSON, например: moshi, gson, jakson

person seyed Jafari    schedule 24.11.2018