gpt4 book ai didi

java - 使用我的 JSON 文件信息填充数组时出现问题

转载 作者:行者123 更新时间:2023-12-02 01:43:33 24 4
gpt4 key购买 nike

我有一个 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");。这个问题与这篇文章 Link 不同,因为我在没有填充数组的情况下做了其他代码,具有相同的编码逻辑(我认为)并且没有问题。

所以,这是我的第二个版本,其中已经填充了数组。而且效果非常好!:

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,将填充的数组作为选项获取,而不会出现任何问题/错误。

所以问题出在我尝试填充 array1[] 的第一个代码中,但我不明白为什么? string[] 不是一个对象,我在第一个 array1[] 框中开始“填充”:0,否则数组不是空的,它上面已经有一个字符串,我的 Agencia 的“nombre”(OpenWorld C.A)

我的问题很简单:为什么我的第一个代码不起作用,为什么我的第二个代码起作用?我怎样才能得到一个代码来正确填充我的数组,并像第二个版本一样返回它?

最佳答案

您的数组为空:String[] array1 = null;。然后尝试分配给数组:array1[j]=agencia.getString("nombre");。这就是您获得 NPE 的原因。

您需要实例化您的数组。

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

或者,使用 ArrayList 代替。

关于java - 使用我的 JSON 文件信息填充数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54080409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com