У меня есть 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)
Мой вопрос прост: почему мой первый код не работает и почему мой второй работает? как получить код для правильного заполнения массива и вернуть его, как это делает вторая версия?