Domanda Recupero dell'oggetto letterale JSON da HttpServletRequest


Sto scrivendo un codice che deve estrarre un oggetto letterale pubblicato su un servlet. Ho studiato l'API per l'oggetto HttpServletRequest, ma non mi è chiaro come ottenere l'oggetto JSON dalla richiesta poiché non è pubblicato da un elemento del modulo in una pagina web.

Qualsiasi intuizione è apprezzata.

Grazie.


44
2017-10-10 18:57


origine


risposte:


stai cercando questo?

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    StringBuilder sb = new StringBuilder();
    BufferedReader reader = request.getReader();
    try {
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append('\n');
        }
    } finally {
        reader.close();
    }
    System.out.println(sb.toString());
}

54
2018-03-30 15:01



Il modo più semplice per popolare il bean è da un oggetto Reader, questo può essere fatto in una singola chiamata:

BufferedReader reader = request.getReader();
Gson gson = new Gson();

MyBean myBean = gson.fromJson(reader, MyBean.class);

20
2018-02-27 10:02



utilizzare il processore jackson JSON

 ObjectMapper mapper = new ObjectMapper();
  Book book = mapper.readValue(request.getInputStream(),Book.class);

12
2017-12-09 17:23



C'è un altro modo per farlo, usando org.apache.commons.io.IOUtils per estrarre la stringa dalla richiesta

String jsonString = IOUtils.toString(request.getInputStream());

Quindi puoi fare quello che vuoi, convertirlo in JSON o altro oggetto con Gson, eccetera.

JSONObject json = new JSONObject(jsonString);
MyObject myObject = new Gson().fromJson(jsonString, MyObject.class);

12
2018-04-30 06:56



Se stai cercando di estrarre i dati dal corpo della richiesta, il codice sopra funziona. Ma penso che tu stia avendo lo stesso problema che ero ..

Se i dati nel corpo sono in formato JSON e lo vuoi come oggetto Java, dovrai analizzarlo da solo o usare una libreria come google-GSON per gestirlo per te. Dovresti esaminare i documenti e gli esempi sul sito web del progetto per sapere come usarlo. È abbastanza semplice.


5
2018-06-28 16:48



Questo è un metodo semplice per ottenere i dati della richiesta HttpServletRequest utilizzando API Java 8 Stream:

String requestData = request.getReader().lines().collect(Collectors.joining());

3
2018-02-22 06:26



La conversione dei dati recuperati dall'oggetto richiesta in oggetto json è la seguente utilizzando google-gson

Gson gson = new Gson();
ABCClass c1 = gson.fromJson(data, ABCClass.class);

//ABC class is a class whose strcuture matches to the data variable retrieved

1
2017-08-08 10:22