Проблема, создав JSON с Servlet

Хорошие, я хочу произойти с одного Servlet в один JavaScript один Json со следующими данными. У эсперта-консультанта по юридическим вопросам есть несколько распределенных, тогда заказов я хочу переместить id и положение эсперта-консультанта по юридическим вопросам, рядом с id и адресом заказов, которые он считает распределенным.

MiServlet.java

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    Consulta cons, cons1;
    JSONObject json = new JSONObject();
    JSONArray  resultado = new JSONArray();
    JSONObject repartidor;
    JSONArray pedidos = new JSONArray();
    JSONObject pedido;

    int idRep, idPed;
    double repLat, repLng;
    String pedDireccion;

    try {
        repartidor = new JSONObject();
        pedido = new JSONObject();
        cons = new Consulta("*", "repartos r, pedidos p");
        cons1 = new Consulta("*", "usuarios");

        ResultSet rs1 = cons1.recuperar("estado <> 'INACTIVO'");
        while (rs1.next()){
            idRep = rs1.getInt("id");
            repLat = rs1.getDouble("posLat");
            repLng = rs1.getDouble("posLng");

            repartidor.put("idRepartidor", idRep);
            repartidor.put("latRepartidor", repLat);
            repartidor.put("lngRepartidor", repLng);

            ResultSet rs = cons.recuperar("idRepartidor = " + idRep + " and r.idPedido = p.id and p.id NOT IN (SELECT id FROM pedidos WHERE estado = 'ENTREGADO' OR estado = 'NO ENTREGADO' OR estado = 'CANCELADO')");
            while (rs.next()){
                idPed = rs.getInt("idPedido");
                pedDireccion = rs.getString("direccion");

                pedido.put("idPedido", idPed);
                pedido.put("direccionPedido", pedDireccion);

                pedidos.put(pedido);
            }
            repartidor.put("Pedidos", pedidos);
            resultado.put(repartidor);
        }
        json.put("Resultado", resultado);

        response.setContentType("application/json");
        response.getWriter().write(json.toString());
    }        
    catch (Exception e) {
    }
}

Сделав один console.log() с JavaScript, меня возвращает это:

Object
    Resultado: Array[3]
        0: Object
            Pedidos: Array[3] // todos los datos de los pedios
            idRepartidor: 15
            latRepartidor: 0
            lngRepartidor: 0
        1: Object
            Pedidos: Array[3] // todos los datos de los pedios
            idRepartidor: 15
            latRepartidor: 0
            lngRepartidor: 0
        2: Object
            Pedidos: Array[3] // todos los datos de los pedios
            idRepartidor: 15
            latRepartidor: 0
            lngRepartidor: 0

Меня приносит тот же эсперт-консультант по юридическим вопросам. В bd у меня есть 3 эсперта-консультанта по юридическим вопросам с 'АКТИВНЫМ' состоянием и с распределенными заказами, но он не приносит их мне.


ОБНОВЛЕНИЕ

В bd в таблице распределение у меня есть эти реестры:

idRepartidor  -  idPedido
    11              31
    11              32
    12              33

Мне приносит для эсперта-консультанта по юридическим вопросам 11 три заказа (31,32,33) и для оставшейся части эспертов-консультантов по юридическим вопросам также.

0
задан 26.01.2017, 18:52
0 ответов

Ты должен делать new () объектов JSONObject внутри циклов консультаций, иначе ты пишешь всегда о тех же инстанциях объекта java.

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    Consulta cons, cons1;
    JSONObject json = new JSONObject();
    JSONArray  resultado = new JSONArray();
    JSONObject repartidor;
    JSONArray pedidos = new JSONArray();
    JSONObject pedido;

    int idRep, idPed;
    double repLat, repLng;
    String pedDireccion;

    try {
        cons = new Consulta("*", "repartos r, pedidos p");
        cons1 = new Consulta("*", "usuarios");

        ResultSet rs1 = cons1.recuperar("estado <> 'INACTIVO'");
        while (rs1.next()){
            repartidor = new JSONObject();
            idRep = rs1.getInt("id");
            repLat = rs1.getDouble("posLat");
            repLng = rs1.getDouble("posLng");

            repartidor.put("idRepartidor", idRep);
            repartidor.put("latRepartidor", repLat);
            repartidor.put("lngRepartidor", repLng);
            pedidos = new JSONArray();

            ResultSet rs = cons.recuperar("idRepartidor = " + idRep + " and r.idPedido = p.id and p.id NOT IN (SELECT id FROM pedidos WHERE estado = 'ENTREGADO' OR estado = 'NO ENTREGADO' OR estado = 'CANCELADO')");
            while (rs.next()){

                pedido = new JSONObject();
                idPed = rs.getInt("idPedido");
                pedDireccion = rs.getString("direccion");

                pedido.put("idPedido", idPed);
                pedido.put("direccionPedido", pedDireccion);

                pedidos.put(pedido);
            }
            repartidor.put("Pedidos", pedidos);
            resultado.put(repartidor);
        }
        json.put("Resultado", resultado);

        response.setContentType("application/json");
        response.getWriter().write(json.toString());
    }        
    catch (Exception e) {
    }
}
3
ответ дан 03.12.2019, 17:29
  • 1
    Спасибо! но actualicé вопрос, потому что я salió другая проблема, если ты замечаешь каков, смоги быть ошибкой. Спасибо за solució n другой проблемы. –  26.01.2017, 18:53
  • 2
    Сделай new заказов для каждого из эспертов-консультантов по юридическим вопросам. –  26.01.2017, 20:51
  • 3
    Ahí ты имеешь, изданный. –  26.01.2017, 21:16