用我的 JSON 文件信息填充数组时出现问题
Problem filling an array with my JSON file information
我有一个 JComboBox,我想用我的 json 文件信息的数组填充它:
这是我的 json:
{"Agencias":[{"nombre":"OpenWorld C.A","agenciaDir":"Los teques","telefono":"45789658","nombreContacto":"daniel","telefonoContacto":"34567321"}]}
我将向您展示同一数组填充函数的两个版本:第一个版本不起作用,这是我正在尝试做的;第二个版本不填充数组(我需要的)但它适用于我的组合框。这是第一个版本:
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");。这个问题和这个postLink不是一回事,因为我在没有填充我的数组的情况下做了其他代码,具有相同的编码逻辑(我认为)并且没有问题。
所以,这是我的第二个版本,数组已经填满。而且效果很好!:
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
}
此代码在控制台中显示了我所有的 JSON "agencias" 名称和我的 JFrame JCombobox,获取填充数组作为选项,但没有获取任何 problem/error.
所以问题出在我尝试填充 array1[] 的第一段代码中,但我不明白为什么? string[] 不是对象,我在第一个 array1[] 框 :0 中开始 "fill",否则数组不为空,它上面已经有一个字符串,我的 Agencia 的 "nombre"(开放世界C.A)
我的问题很简单:为什么我的第一个代码不起作用,为什么我的第二个代码起作用?我怎样才能得到一个代码来正确填充我的数组,并且 return 它像第二个版本一样?
您的数组为空:String[] array1 = null;
。然后你尝试赋值给数组:array1[j]=agencia.getString("nombre");
。这就是你获得 NPE 的原因。
您需要实例化您的数组。
String[] array1 = new String[listaAgencisa.length()];
或者,使用 ArrayList
。
我有一个 JComboBox,我想用我的 json 文件信息的数组填充它:
这是我的 json:
{"Agencias":[{"nombre":"OpenWorld C.A","agenciaDir":"Los teques","telefono":"45789658","nombreContacto":"daniel","telefonoContacto":"34567321"}]}
我将向您展示同一数组填充函数的两个版本:第一个版本不起作用,这是我正在尝试做的;第二个版本不填充数组(我需要的)但它适用于我的组合框。这是第一个版本:
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");。这个问题和这个postLink不是一回事,因为我在没有填充我的数组的情况下做了其他代码,具有相同的编码逻辑(我认为)并且没有问题。
所以,这是我的第二个版本,数组已经填满。而且效果很好!:
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
}
此代码在控制台中显示了我所有的 JSON "agencias" 名称和我的 JFrame JCombobox,获取填充数组作为选项,但没有获取任何 problem/error.
所以问题出在我尝试填充 array1[] 的第一段代码中,但我不明白为什么? string[] 不是对象,我在第一个 array1[] 框 :0 中开始 "fill",否则数组不为空,它上面已经有一个字符串,我的 Agencia 的 "nombre"(开放世界C.A)
我的问题很简单:为什么我的第一个代码不起作用,为什么我的第二个代码起作用?我怎样才能得到一个代码来正确填充我的数组,并且 return 它像第二个版本一样?
您的数组为空:String[] array1 = null;
。然后你尝试赋值给数组:array1[j]=agencia.getString("nombre");
。这就是你获得 NPE 的原因。
您需要实例化您的数组。
String[] array1 = new String[listaAgencisa.length()];
或者,使用 ArrayList
。