您好我使用Gson库,我有一个名为Estudiante.class的类,并且我有一个Json文件
看起来像这样。我正在使用Eclipse(Java)MAC OSX。

{"nombre":"Alex","apellido":"S","cedula":"1234","mes":2,"ano":2,"dia":2,"zona":"LSM","telefono":"0000","semestre":5,"promedio":5.0}
{"nombre":"Alfred","apellido":"S","cedula":"523412","mes":6,"ano":6,"dia":6,"zona":"LSM","telefono":"0001","semestre":6,"promedio":6.0}


现在,我想阅读该内容并将其放入位置为1的Alex和位置为2的Alfred的Estudiante数组中(如果我有更多Object,则依此类推)。

任何人都可以帮助我实现此实现。我已经阅读了成千上万的主题,无法弄清楚我做错了什么。谢谢。

Estudiante estudiantes [] =新的Estudiante [20];

公共无效leerJson(){

    int i=0;
    int contador=0;
    try {
         JsonReader reader = new JsonReader(new FileReader("estudiantes.json"));

         while (reader.hasNext()) {

             String name = reader.nextName();
             estudiantes[i]=new Estudiante();


              if (name.equals("nombre")) {
                  estudiantes[i].setNombre(reader.nextString());

              } else if (name.equals("apellido")) {
                  estudiantes[i].setApellido(reader.nextString());


              } else if (name.equals("cedula")) {
                  estudiantes[i].setCedula(reader.nextString());

              } else if (name.equals("mes")) {
                  estudiantes[i].setMes(Integer.parseInt(reader.nextString()));

              } else if (name.equals("ano")) {
                  estudiantes[i].setAno(Integer.parseInt(reader.nextString()));

              }else if (name.equals("dia")) {
                  estudiantes[i].setDia(Integer.parseInt(reader.nextString()));

              } else if (name.equals("telefono")) {
                  estudiantes[i].setTelefono(reader.nextString());

              } else if (name.equals("semestre")) {
                  estudiantes[i].setSemestre(Integer.parseInt(reader.nextString()));

              } else if (name.equals("promedio")) {
                  estudiantes[i].setPromedio(Double.parseDouble(reader.nextString()));
                  i++;
              } else {
                reader.skipValue(); //avoid some unhandle events
              }


            }

            reader.endObject();
            reader.close();

             } catch (FileNotFoundException e) {
                 System.out.println("asdsa");
            e.printStackTrace();
             } catch (IOException e) {
                 System.out.println("vrvrt");
            e.printStackTrace();
             }

}


}
那就是我的进步

最佳答案

我上大学时曾经做过这样的练习,我使用ArrayList是为了我的目的,您可以尝试这样的事情(我与Pokemon一起工作,因为那时我以这种方式进行练习,至少是讲课的,为了我):

List<PokemonBean> plist = new ArrayList<PokemonBean>();
PokemonBean p1 = new PokemonBean();
p1.setNumber(1);
p1.setName("Bulbasaur");
p1.setType("Grass");

PokemonBean p2 = new PokemonBean();
p2.setNumber(25);
p2.setName("Pikachu");
p2.setType("Electric");

plist.add(p1);
plist.add(p2);

Gson agson = new Gson();
Type myListType = new TypeToken<List<PokemonBean>>(){}.getType();
String myJsonString = agson.toJsonTree(plist, myListType);


而且,如果您想阅读,可以用相同的方法进行:

Type myListType = new TypeToken<List<PokemonBean>>(){}.getType();
List<Pokemon> myListAgain = agson.fromJson(json, myListType);


让我知道这是否适合您。

问候和快乐的编码:)。

10-08 18:58