需要帮助阅读JSON JAVA

时间:2018-05-23 13:30:00

标签: java json

我有一个带有此代码的JSON。

  [  
   {  

   },
   {  

   },
   {  

   },
   {  

   },
   {  

   },
   {  

   },
   {  
      "Producto0":[  
         {  
            "crf":"4555424"
         },
         {  
            "name":"Limpiador"
         },
         {  
            "desc":"Producto de importacion italiano"
         },
         {  
            "pve":"8.44"
         },
         {  
            "pvp":"14.99"
         },
         {  
            "cdp":"10"
         },
         {  
            "familia":"Limpieza"
         },
         {  
            "existencias":"10"
         }
      ],
      "Producto1":[  
         {  
            "crf":"5132413"
         },
         {  
            "name":"Colador"
         },
         {  
            "desc":"Colador de acero"
         },
         {  
            "pve":"15"
         },
         {  
            "pvp":"18"
         },
         {  
            "cdp":"10"
         },
         {  
            "familia":"Cocina"
         },
         {  
            "existencias":"100"
         }
      ]
   },
   {  

   },
   {  
      "Proveedor0":[  
         {  
            "crf":"10"
         },
         {  
            "razonsocial":"pene"
         },
         {  
            "cif":"10"
         },
         {  
            "num":"10"
         },
         {  
            "correo":"10"
         },
         {  
            "direccion":"10"
         },
         {  
            "metodopago":"1"
         },
         {  
            "observaciones":"10"
         }
      ],
      "Proveedor1":[  
         {  
            "crf":"5421452"
         },
         {  
            "razonsocial":"Falete"
         },
         {  
            "cif":"45411"
         },
         {  
            "num":"42314"
         },
         {  
            "correo":"falete@gmail.com"
         },
         {  
            "direccion":"tu casa"
         },
         {  
            "metodopago":"T"
         },
         {  
            "observaciones":"Es muy pesado"
         }
      ]
   }
]

我尝试了很多方法来阅读这个JSON,但我无法实现它。这是我的代码中唯一有效的部分。

 import org.json.simple.JSONArray;
import org.json.simple.parser.*;
import org.json.*;

import java.io.FileReader;
import java.io.IOException;

public class parse {
routes router = new routes();
String ruta = router.getruta();
    public parse() {
        // TODO Auto-generated constructor stub
    }

    public void parseproductos() {
        JSONParser parser = new JSONParser();
        try {
            JSONArray a = (JSONArray) parser.parse(new FileReader("ruta"));
            for (Object o : a)
            {
            }
        } catch (IOException | ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

}

我尝试读取一个从数据库中另一个类生成的JSON。在我尝试阅读例如“ProductoXXX”的那一刻,我没有得到它们或得到所有想法。有人可以帮我读一下JSON只有“ProductoXX”吗?

更新,有人要求我的JSON编码器帮我简化它。

import java.io.FileWriter; import java.io.IOException;

import org.json.simple.JSONArray; import org.json.simple.JSONObject;

public class getdata extends dbconnect {

public void getData() throws IOException {
    int i = 0;

    JSONArray listt = new JSONArray();

    JSONObject jobj = new JSONObject();
    JSONObject jobjt1 = new JSONObject();
    JSONObject jobjt2 = new JSONObject();
    JSONObject jobjt3 = new JSONObject();
    JSONObject jobjt4 = new JSONObject();
    JSONObject jobjt5 = new JSONObject();
    JSONObject jobjt6 = new JSONObject();
    JSONObject jobjt7 = new JSONObject();
    JSONObject jobjt8 = new JSONObject();
    JSONObject jobjt9 = new JSONObject();



    try {
        //Albaran
        String query1 = "select * from Albaran";
        rs = st.executeQuery(query1);
        i=0;
        while(rs.next()) {
            JSONArray list1 = new JSONArray();
            JSONObject jobja = new JSONObject();
            JSONObject jobjb = new JSONObject();
            JSONObject jobjc = new JSONObject();
            JSONObject jobjd = new JSONObject();
            JSONObject jobje = new JSONObject();
            JSONObject jobjf = new JSONObject();
            JSONObject jobjg = new JSONObject();
            JSONObject jobjh = new JSONObject();

            String a1= rs.getString("CodAlbaran");
            String a2= rs.getString("CodRefCli");
            String a3= rs.getString("CodRefPro");
            String a4= rs.getString("CIFPropio");
            String a5= rs.getString("Dir.Archivo");

            jobja.put("codalbaran", a1);
            jobjb.put("codRefCli", a2);
            jobjc.put("codrefpro",a3 );
            jobjd.put("cifpropio", a4);
            jobje.put("directorio", a5);                
             list1.add(jobja);
             list1.add(jobjb);
             list1.add(jobjc);
             list1.add(jobjd);
             list1.add(jobje);

             jobjt1.put("Albaran"+i++, list1);

        }
        listt.add(jobjt1);
        //Clientes
        String query2 = "select * from Clientes";
        rs = st.executeQuery(query2);
        i=0;
        while(rs.next()) {
            JSONArray list2 = new JSONArray();
            JSONObject jobja = new JSONObject();
            JSONObject jobjb = new JSONObject();
            JSONObject jobjc = new JSONObject();
            JSONObject jobjd = new JSONObject();
            JSONObject jobje = new JSONObject();
            JSONObject jobjf = new JSONObject();
            JSONObject jobjg = new JSONObject();
            JSONObject jobjh = new JSONObject();

            String b1 = rs.getString("CodRefCli");
            String b2 = rs.getString("RazonSocial");
            String b3 = rs.getString("CIF");
            String b4 = rs.getString("Num");
            String b5 = rs.getString("Correo");
            String b6 = rs.getString("Direccion");
            String b7 = rs.getString("MetodoPago");
            String b8 = rs.getString("Observaciones");

             jobja.put("codrefcli", b1);
             jobjb.put("razonsocial", b2);
             jobjc.put("cif", b3);
             jobjd.put("num", b4);
             jobje.put("correo", b5);
             jobjf.put("direccion", b6);
             jobjg.put("metodopago", b7);
             jobjh.put("observaciones", b8);
             list2.add(jobja);
             list2.add(jobjb);
             list2.add(jobjc);
             list2.add(jobjd);
             list2.add(jobje);
             list2.add(jobjf);
             list2.add(jobjg);
             list2.add(jobjh);

             jobjt2.put("Cliente"+i++, list2);

        }
        listt.add(jobjt2);
        //Empleados
        String query3 = "select * from Empleados";
        rs = st.executeQuery(query3);
        i=0;
        while(rs.next()) {
            JSONArray list3 = new JSONArray();
            JSONObject jobja = new JSONObject();
            JSONObject jobjb = new JSONObject();
            JSONObject jobjc = new JSONObject();
            JSONObject jobjd = new JSONObject();
            JSONObject jobje = new JSONObject();
            JSONObject jobjf = new JSONObject();
            JSONObject jobjg = new JSONObject();
            JSONObject jobjh = new JSONObject();

            String c1 = rs.getString("Cod.Empleado");
            String c2 = rs.getString("Nombre");
            String c3 = rs.getString("Apellidos");
            String c4 = rs.getString("DNI");
            String c5 = rs.getString("Direccion");
            String c6 = rs.getString("FechaAlta");
            String c7 = rs.getString("CopiaContrato");
            String c8 = rs.getString("NCuenta");

             jobja.put("codempleado", c1);
             jobjb.put("nombre", c2);
             jobjc.put("apellidos", c3);
             jobjd.put("dni", c4);
             jobje.put("direccion", c5);
             jobjf.put("fechaalta", c6);
             jobjg.put("copiacontrato", c7);
             jobjh.put("numcuenta", c8);
             list3.add(jobja);
             list3.add(jobjb);
             list3.add(jobjc);
             list3.add(jobjd);
             list3.add(jobje);
             list3.add(jobjf);
             list3.add(jobjg);
             list3.add(jobjh);

             jobjt3.put("Empleado"+i++, list3);

        }
        listt.add(jobjt3);
        //Existencias
        String query4 = "select * from Existencias";
        rs = st.executeQuery(query4);
        i=0;
        while(rs.next()) {
            JSONArray list4 = new JSONArray();
            JSONObject jobja = new JSONObject();
            JSONObject jobjb = new JSONObject();
            JSONObject jobjc = new JSONObject();
            JSONObject jobjd = new JSONObject();
            JSONObject jobje = new JSONObject();
            JSONObject jobjf = new JSONObject();
            JSONObject jobjg = new JSONObject();
            JSONObject jobjh = new JSONObject();

            String d1 = rs.getString("Cod.RefExistencia");
            String d2 = rs.getString("Cod.RefPro");
            String d3 = rs.getString("Cantidad");
            String d4 = rs.getString("Sitio");
            String d5 = rs.getString("Proposito");

             jobja.put("codrefexistencia", d1);
             jobjb.put("codrefproducto", d2);
             jobjc.put("cantidad", d3);
             jobjd.put("sitio", d4);
             jobje.put("proposito", d5);
             list4.add(jobja);
             list4.add(jobjb);
             list4.add(jobjc);
             list4.add(jobjd);
             list4.add(jobje);

             jobjt4.put("Existencia"+i++, list4);

        }
        listt.add(jobjt4);
        //PedidosClientes
        String query5 = "select * from PedidosC";
        rs = st.executeQuery(query5);
        i=0;
        while(rs.next()) {
            JSONArray list5 = new JSONArray();
            JSONObject jobja = new JSONObject();
            JSONObject jobjb = new JSONObject();
            JSONObject jobjc = new JSONObject();
            JSONObject jobjd = new JSONObject();
            JSONObject jobje = new JSONObject();
            JSONObject jobjf = new JSONObject();
            JSONObject jobjg = new JSONObject();
            JSONObject jobjh = new JSONObject();

            String e1= rs.getString("NumPed");
            String e2= rs.getString("FechaPedido");
            String e3= rs.getString("FormadePago");
            String e4 = rs.getString("EnviadoA");
            String e5 = rs.getString("CodCliente");
            String e6 = rs.getString("CPP");

             jobja.put("numped", e1);
             jobjb.put("fechapedido", e2);
             jobjc.put("formapago", e3);
             jobjd.put("enviadoa", e4);
             jobje.put("codcliente", e5);
             jobjf.put("cpp", e6);
             list5.add(jobja);
             list5.add(jobjb);
             list5.add(jobjc);
             list5.add(jobjd);
             list5.add(jobje);
             list5.add(jobjf);

             jobjt5.put("PedidoCliente"+i++, list5);

        }
        listt.add(jobjt5);
        //PedidosProveedores
        String query6 = "select * from PedidosC";
        rs = st.executeQuery(query6);
        i=0;
        while(rs.next()) {
            JSONArray list6 = new JSONArray();
            JSONObject jobja = new JSONObject();
            JSONObject jobjb = new JSONObject();
            JSONObject jobjc = new JSONObject();
            JSONObject jobjd = new JSONObject();
            JSONObject jobje = new JSONObject();
            JSONObject jobjf = new JSONObject();
            JSONObject jobjg = new JSONObject();
            JSONObject jobjh = new JSONObject();

            String f1= rs.getString("NumPed");
            String f2= rs.getString("FechaPedido");
            String f3 = rs.getString("FormadePago");
            String f4 = rs.getString("EnviadoA");
            String f5 = rs.getString("Cod.Prov");
            String f6 = rs.getString("CPP");

             jobja.put("numped", f1);
             jobjb.put("fechapedido", f2);
             jobjc.put("formapago", f3);
             jobjd.put("enviadoa", f4);
             jobje.put("codcliente", f5);
             jobjf.put("cpp", f6);
             list6.add(jobja);
             list6.add(jobjb);
             list6.add(jobjc);
             list6.add(jobjd);
             list6.add(jobje);
             list6.add(jobjf);

             jobjt6.put("PedidoProveedor"+i++, list6);

        }
        listt.add(jobjt6);
        //Productos
        String query7 = "select * from Productos";
        rs = st.executeQuery(query7);
        i=0;
        while(rs.next()) {
            JSONArray list7 = new JSONArray();
            JSONObject jobja = new JSONObject();
            JSONObject jobjb = new JSONObject();
            JSONObject jobjc = new JSONObject();
            JSONObject jobjd = new JSONObject();
            JSONObject jobje = new JSONObject();
            JSONObject jobjf = new JSONObject();
            JSONObject jobjg = new JSONObject();
            JSONObject jobjh = new JSONObject();

            String g1= rs.getString("Cod.RefPro");
            String g2= rs.getString("Nombre");
            String g3 = rs.getString("Descripcion");
            String g4 = rs.getString("PrecioNeto");
            String g5 = rs.getString("pvp");
            String g6 = rs.getString("CodRefProv");
            String g7 = rs.getString("Familia");
            String g8 = rs.getString("Existencias");

             jobja.put("crf", g1);
             jobjb.put("name", g2);
             jobjc.put("desc", g3);
             jobjd.put("pve", g4);
             jobje.put("pvp", g5);
             jobjf.put("cdp", g6);
             jobjg.put("familia", g7);
             jobjh.put("existencias", g8);
             list7.add(jobja);
             list7.add(jobjb);
             list7.add(jobjc);
             list7.add(jobjd);
             list7.add(jobje);
             list7.add(jobjf);
             list7.add(jobjg);
             list7.add(jobjh);

             jobjt7.put("Producto"+i++, list7);


        }
        listt.add(jobjt7);
        //PropiaEmpresa
        String query8 = "select * from PropiaEmpresa";
        rs = st.executeQuery(query8);
        i=0;
        while(rs.next()) {
            JSONArray list8 = new JSONArray();
            JSONObject jobja = new JSONObject();
            JSONObject jobjb = new JSONObject();
            JSONObject jobjc = new JSONObject();
            JSONObject jobjd = new JSONObject();
            JSONObject jobje = new JSONObject();
            JSONObject jobjf = new JSONObject();
            JSONObject jobjg = new JSONObject();
            JSONObject jobjh = new JSONObject();

            String p1= rs.getString("CIF");
            String p2= rs.getString("RazonSocial");
            String p3 = rs.getString("Telefono");
            String p4 = rs.getString("Correo");
            String p5 = rs.getString("Direccion");
            String p6 = rs.getString("NCuenta");

             jobja.put("cif", p1);
             jobjb.put("razonsocial", p2);
             jobjc.put("telef", p3);
             jobjd.put("correo", p4);
             jobje.put("direccion", p5);
             jobjf.put("ncuenta", p6);
             list8.add(jobja);
             list8.add(jobjb);
             list8.add(jobjc);
             list8.add(jobjd);
             list8.add(jobje);
             list8.add(jobjf);

             jobjt8.put("PropiaEmpresa", list8);

        }
        listt.add(jobjt8);
        //Proveedor
        String query9 = "select * from Proveedor";
        rs = st.executeQuery(query9);
        i=0;
        while(rs.next()) {
            JSONArray list9 = new JSONArray();
            JSONObject jobja = new JSONObject();
            JSONObject jobjb = new JSONObject();
            JSONObject jobjc = new JSONObject();
            JSONObject jobjd = new JSONObject();
            JSONObject jobje = new JSONObject();
            JSONObject jobjf = new JSONObject();
            JSONObject jobjg = new JSONObject();
            JSONObject jobjh = new JSONObject();

            String h1= rs.getString("Cod.Referencia");
            String h2= rs.getString("RazonSocial");
            String h3 = rs.getString("CIF");
            String h4 = rs.getString("Numero");
            String h5 = rs.getString("Correo");
            String h6 = rs.getString("Direccion");
            String h7 = rs.getString("MetodoPago");
            String h8 = rs.getString("Observaciones");

             jobja.put("crf", h1);
             jobjb.put("razonsocial", h2);
             jobjc.put("cif", h3);
             jobjd.put("num", h4);
             jobje.put("correo", h5);
             jobjf.put("direccion", h6);
             jobjg.put("metodopago", h7);
             jobjh.put("observaciones", h8);
             list9.add(jobja);
             list9.add(jobjb);
             list9.add(jobjc);
             list9.add(jobjd);
             list9.add(jobje);
             list9.add(jobjf);
             list9.add(jobjg);
             list9.add(jobjh);

             jobjt9.put("Proveedor"+i++, list9);

        }
        listt.add(jobjt9);
        // try-with-resources statement based on post comment below :)
        routes router = new routes();
        String ruta = router.getruta();

        try (FileWriter file = new FileWriter(ruta+"data.json")) {
            file.write(listt.toJSONString());
            file.flush();
        }
    }catch(Exception ex) {
        System.out.println("Error: "+ex);
    }
}

}

抱歉原始。从手机发布,无法从计算机访问互联网。

1 个答案:

答案 0 :(得分:0)

使用递归..这可能对你有所帮助.. 这是从json读取所有数据的通用..

public class TestMain {
    public static void main(String[] args) throws Exception {
        JSONArray jsonArray = new JSONArray("Your JSON String");
        readJSONArray(jsonArray);
    }
    public static JSONObject readJSONObject(JSONObject inputObject) throws Exception {
        JSONObject resultObject = new JSONObject();
        Iterator iterator = inputObject.keys();
        while (iterator.hasNext()) {
            String key = (String) iterator.next();
            if (inputObject.get(key) instanceof JSONObject) {
                JSONObject jsonObject = (JSONObject) inputObject.get(key);
                resultObject.put(getModifiedKey(key), readJSONObject(jsonObject));
            } else if (inputObject.get(key) instanceof JSONArray) {
                JSONArray jsonArray = (JSONArray) inputObject.get(key);
                resultObject.put(getModifiedKey(key), readJSONArray(jsonArray));
            } else {
                System.out.println("key= "+key+", value= "+inputObject.get(key)); //instead printing u can write your own logic
            }
        }
        return resultObject;
    }
    public static JSONArray readJSONArray(JSONArray inputArray) throws Exception {
        JSONArray resultArray = new JSONArray();
        for (int i = 0; i < inputArray.length(); i++) {
            if (inputArray.get(i) instanceof JSONObject) {
                JSONObject jsonObject = (JSONObject) inputArray.get(i);
                resultArray.put(i, readJSONObject(jsonObject));
            } else if (inputArray.get(i) instanceof JSONArray) {
                JSONArray jsonArray = (JSONArray) inputArray.get(i);
                resultArray.put(i, readJSONArray(jsonArray));
            } else {
                System.out.println("index= "+i+", value= "+inputArray.get(i)); //instead printing u can write your own logic
            }
        }
        return resultArray;
    }
}