Проблема с заполнением массива информацией из моего файла JSON - PullRequest
0 голосов
/ 07 января 2019

У меня есть JComboBox, который я хочу заполнить массивом информации о моем файле json:

Это мой JSON:

{"Agencias":[{"nombre":"OpenWorld C.A","agenciaDir":"Los teques","telefono":"45789658","nombreContacto":"daniel","telefonoContacto":"34567321"}]} 

Я покажу вам 2 версии одной и той же функции array-fill: первая версия не работает, и это то, что я пытаюсь сделать; вторая версия не заполняет массив (что мне нужно), но он работает в моем поле со списком. Это первая версия:

 public String[] llenarComboboxAgencias() {
     String[] array1 = null;                                        //i create a new null array
     JSONArray listaAgencias = agencias.getJSONArray("Agencias");  //get into my JSon "Agencias" array
     for(int j=0;j<listaAgencias.length();j++) {                   //start reading "Agencias array"
         JSONObject agencia = listaAgencias.getJSONObject(j);       //JSONObject for each object in my "Agencias" array.
         this.string1=agencia.getString("nombre");                  //I save my JSONObect "nombre"(name) in a string                                    
         array1[j]=agencia.getString("nombre");                     //I give to my "array1"[position] the information of the object name
     } 
     return array1;                                                 //Return my string array1
 }    

Теперь, что происходит в этом уже показанном коде, это исключение nullpointerException в строке: array [j] = agencia.getString ("nombre") ;. Вопрос не в этом посте Ссылка , потому что я сделал другой код без заполнения массива, с той же логикой кодирования (я думаю) и у меня нет проблем.

Итак, это моя вторая версия с уже заполненным массивом. И работает отлично!:

public String[] llenarComboboxAgencias(){             
     JSONArray listaAgencias = agencias.getJSONArray("Agencias");   //get into my JSon "Agencias" array
     for(int j=0;j<listaAgencisa.length();j++) {                    //start reading "Agencias array"
         JSONObject agencia = listaAgencias.getJSONObject(j);       //JSONObject for each object in my "Agencias" array.
         this.string1=agencia.getString("nombre");                  //I save my JSONObect "nombre"(name) in a string
         //this is where my code changes: now im printing all my "names" on the console
         System.out.println(string1);
     }
     //and this is the most important change: im not filling my array, this is an already filled one!
     String[] array1= {"Hello","Friend"};
     return array1;   //return my already filled array
 }    

Этот код в консоли показывает все мои имена JBA "agencias", а мой JFrame JCombobox получает заполненный массив в качестве опций без каких-либо проблем / ошибок.

Итак, проблема в первом коде, где я пытался заполнить свой массив1 [], но я не понимаю, почему? строка [] не является объектом, и я начинаю «заливку» в первом блоке array1 []: 0, в противном случае массив не пустой, в нем уже есть строка «nombre» моего Agencia (OpenWorld CA)

Мой вопрос прост: почему мой первый код не работает и почему мой второй работает? как получить код для правильного заполнения массива и вернуть его, как это делает вторая версия?

1 Ответ

0 голосов
/ 07 января 2019

Ваш массив равен нулю: String[] array1 = null;. Затем вы пытаетесь присвоить массиву: array1[j]=agencia.getString("nombre");. Вот почему вы получаете NPE.

Вам нужно создать экземпляр вашего массива.

String[] array1 = new String[listaAgencisa.length()];

Вместо этого используйте ArrayList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...