Saltar al contenido

Método que devuelve JSON “vacío: falso” aunque este JSON tiene datos

Solución:

Spring boot usa jackson como serializador predeterminado y está intentando devolver JSONObject. Jackson no sabe cómo serializarlo.

Si desea devolver json dinámico, puede usar Map como se muestra a continuación:

@GetMapping("/pgTabelka")
public Map<String, Object> pgTable(HttpServletRequest request)
{
    Map<String, Object> json = new HashMap();

    int draw = 0;
    int start = 0;
    int length = 10;

    if(request.getParameter("draw")!=null)
        draw = Integer.parseInt(request.getParameter("draw"));
    if(request.getParameter("start")!=null)
        start = Integer.parseInt(request.getParameter("start"));
    if(request.getParameter("length")!=null)
        length = Integer.parseInt(request.getParameter("length"));
    int totalRecords = sed.recordsTotal();

    List<Seria> serie = sed.findPart(start, length);

    json.put("draw", ++draw);
    json.put("recordsTotal", totalRecords);
    json.put("recordsFiltered", totalRecords);
    json.put("data", serie);

    return json;
}

O puede crear una clase que represente su estructura json y devolver su clase de datos personalizada como respuesta, Spring se encargará del resto por usted.

@GetMapping("/pgTabelka")
public YourJsonDataClass pgTable(HttpServletRequest request)
{
    ...

    YourJsonDataClass json = new YourJsonDataClass();
    json.setDraw(++draw);
    json.setRecordsTotal(totalRecords);
    json.setRecordsFiltered(totalRecords);
    json.setData(serie);

    return json;
}

Use HashMap en lugar de usar JSONObject

List<HashMap<String, String>> myList = new ArrayList<HashMap<String, String>>();

HashMap<String, String> map = new HashMap<>();

map.put(key, value);

myList.add(map);

Si tiene un ResultSet, puede repetir este código a través de rs. Vale la pena señalar que si su HashMap tiene claves duplicadas, tendrá que usar un Multimap ya que HashMap no permite claves duplicadas

Multimap<String, String> map = ArrayListMultimap.create();
map.put(key1, "value1");
map.put(key1, "value2");
map.put(key2, "value3");
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *