Как вернуть пустой JSON в Spring MVC? - PullRequest
0 голосов
/ 08 июня 2019

Я использую ajax с методом GET, надеюсь, получу JSON, но иногда ответ будет нулевым и получит ошибку:

SyntaxError: Неожиданный конец ввода JSON

Ajax:

 $(document).ready(function() {

    $("#form_data").submit(function(e) {
        e.preventDefault()          
        var expediente = $('#expediente').val();
        $.ajax({
            url : 'buscarPaciente' + '?expediente=' + expediente,
            dataType : "json",
            type : "GET",
            contentType : 'application/json',
            mimeType : 'application/json',
            success : function(data) {
                console.log(data.nombre);
            },
            error : function(xhr, status, error) {
                console.log(error)
            }
        });

    })
});

в контроллере:

@RequestMapping(value="/buscarPaciente", method = RequestMethod.GET)
public @ResponseBody MntPaciente 
buscarPaciente(@RequestParam("expediente") String expediente) {         
    MntPaciente mntPaciente = servicePx.findByexpediente(expediente);
    if (mntPaciente!= null) {
        return mntPaciente;         
    }
    return null; // Should I return an empty json?  how?        
}

1 Ответ

1 голос
/ 08 июня 2019

Есть несколько способов сделать это.Во-первых, необходимо настроить библиотеку JSON, которая использовалась для сериализации JSON. В случае Jackson вы можете использовать @JsonInclude, чтобы исключить все пустые свойства, чтобы не сериализовать, и просто вернуть пустое MntPaciente:

@JsonInclude(Include.NON_EMPTY)
public class MntPaciente {

}

public @ResponseBody MntPaciente buscarPaciente(@RequestParam("expediente") String expediente) {

    ....
    return new MntPaciente();  
}

Чтобы применить глобально, а не настраивать для каждого объекта, вы можете использовать

ObjectMapper om = new ObjectMapper();
om.setSerializationInclusion(Include.NON_EMPTY);

Другой способ - изменить метод контроллера, чтобы он возвращал ResponseEntity и напрямую возвращал пустую строку JSON:

public @ResponseBody ResponseEntity buscarPaciente(@RequestParam("expediente") String expediente) {

      if (mntPaciente!= null) {
         return ResponseEntity.of(mntPaciente);       
      }else{
         return ResponseEntity.of("{}");
       }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...