有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个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
 }    

现在,在已经显示的代码中发生的是:array[j]=agencia行中的nullpointerException。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,将填充的数组作为选项获取,而不会出现任何问题/错误

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

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


共 (1) 个答案

  1. # 1 楼答案

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

    您需要实例化您的数组

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

    或者,使用ArrayList