如何在Json文件中读取多个JsonObject

时间:2014-12-01 20:46:53

标签: java json

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

{"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}

现在我想阅读并将其放入Estudiante数组中,位置为1 Alex,位置为2 Alfred(依此类推,如果我有更多对象)。

any1可以帮助我实现这个功能。我已经阅读了数以千计的主题,无法弄清楚我做错了什么。感谢。

Estudiante estudiantes [] = new Estudiante [20];

public void 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();
             }

}

} 多数民众赞成我的进步

1 个答案:

答案 0 :(得分:0)

我曾经在大学期间做了一次这样的练习,我使用ArrayList作为我的目的,你可以尝试这样的事情(我和口袋妖怪一起工作,因为那时我做了这样的练习,更有说服力,至少对我来说):

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);

请告诉我这是否适合您。

关心和快乐的编码:)。