Come posso ottenere un JSONObject
da un HttpServletRequest
in servlet?Come ottenere JSONObject da String
risposta
Molto semplice:
JSONObject o = new JSONObject(request.getParameter("WHATEVER"));
Edit: Dal momento che si utilizza JSON-lib, è
JSONObject o = (JSONObject) JSONSerializer.toJSON(request.getParameter("WHATEVER"));
per voi.
JSONObject non ha alcun costruttore con argomento String quale API si sta utilizzando ?? –
Sto usando la libreria JSON da json.org. –
GSON è una discreta libreria JSON basata su Java.
GSON è buono davvero buona lib –
Vedere JSONObject(java.lang.String
). Questo creerà un oggetto JSONObject
se passi una stringa che è JSON valida. Il costruttore lancia un JSONException
quindi dovrai gestirlo. Questo è altrettanto valido se invii JSON non valido.
Dipende davvero da quello che stai facendo. Per la maggior parte, JSONObject utilizzerà i getter di bean per creare il tuo oggetto JSON (se passi un bean al costruttore). Altrimenti puoi passare un oggetto insieme a un array di stringhe di nomi. Qui, JSONObject
utilizzerà la riflessione per capire i membri pubblici dell'oggetto. Utilizzerà quindi i nomi forniti come chiavi per questo oggetto.
JSONObject
gestirà qualsiasi tipo di tipo Map
senza problemi. Ma se il tuo oggetto è un List
, devi usare JSONArray
. Un altro problema è se il tuo Map
contiene un List
. Quindi, per qualche motivo, JSONObject
non è in grado di capire che si tratta di un List
e utilizzerà la rappresentazione String standard dello (non quello che si desidera). L'unico modo per gestirlo è iterare su Map
e creare manualmente il JSONObject
.
Per quanto riguarda la tua domanda, presumo che tu abbia un servlet con un'azione che restituirà JSON. In tal caso, creare un nuovo JSONObject
e utilizzare PrintWriter
e jsonObject.toString()
per emettere il proprio JSON.
Lo stai facendo un po 'il modo . C'è sicuramente un modo più semplice per farlo. Invia come parametri di richiesta normali, non come JSON. È possibile utilizzare jQuery.serialize()
per raccogliere tutti i campi modulo come parametri. Ecco un esempio calcio d'inizio di come la JSP dovrebbe essere simile:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$('#form').submit(function() {
$form = $(this);
$.post($form.attr('action'), $form.serialize(), function(response) {
alert(response); // "OK"
});
return false;
});
});
</script>
</head>
<body>
<form id="form" action="register" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">
</form>
</body>
</html>
Ed ecco come il servlet in ascolto su un url-pattern
di /register/*
può apparire come:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username + "," + password);
response.getWriter().write("OK"); // You can write JSON string here.
}
Con il plugin jQuery form Sarà essere più trasparenti.
$(document).ready(function() {
$('#form').ajaxForm(function(response) {
alert(response); // "OK"
});
});
Per rispondere indietro dalla servlet a jQuery, è più facile se si torna dati reali JSON.Per esempio:
Map<String, Object> data = new HashMap<String, Object>();
if (userDAO.exist(username)) {
data.put("success", false);
data.put("message", "Username in use, please choose another");
} else {
userDAO.create(username, password);
data.put("success", true);
data.put("message", "User successfully registered");
}
response.setContentType("application/json");
response.getWriter().write(new Gson().toJson(data)); // Gson = Google Gson.
e poi in jQuery:
$(document).ready(function() {
$('#form').ajaxForm(function(data) {
$('#message').addClass(data.success ? 'success' : 'error').text(data.message).show();
});
});
La domanda non è correlata a jQuery né JavaScript, questa risposta è OT. –
Sembra che è necessario utilizzare la versione di net.sf.json.JSONObject
JSONObject (questa non è la versione json.org).
Per la versione net.sf.json.JSONObject
sufficiente utilizzare
JSONObject.fromObject(Object obj)
dove obj
è o
- una stringa JSON formattato valido
- un POJO Bean con getter e setter.
- 1. Come convertire String in JsonObject
- 2. Convertire JsonObject a String
- 3. Crea JSONObject da POJO
- 4. Da org.json JSONObject a org.codehaus.jackson
- 5. Come ottenere un oggetto Date da String
- 6. Come ottenere risorse (int) da String - Android
- 7. Come ottenere System.IO.Stream da un oggetto String
- 8. Come posso iterare JSONObject per ottenere singoli elementi
- 9. Gson: converti direttamente String in JsonObject (senza POJO)
- 10. Come simulare JSONObject?
- 11. Regex per ottenere NUMBER solo da String
- 12. JSONObject ClassNotFoundException
- 13. InputStream a JsonObject - GSON
- 14. Come ottenere la prima riga da String in Ruby?
- 15. Come confrontare il valore nullo da JsonObject in java
- 16. java.lang.NoClassDefFoundError: org/json/JSONObject
- 17. JsonObject to Model Facebook SDK
- 18. UnitTest JSONObject mostra null
- 19. Iterate su proprietà JsonObject
- 20. Come verificare il tipo di un valore da un oggetto JSONObject?
- 21. Aggiungi JsonArray a JsonObject
- 22. Get Data da String
- 23. Android Converti stringa in JSONObject
- 24. Ottenere posti da API Foursquare
- 25. Restituzione di JsonObject tramite @ResponseBody in SpringMVC
- 26. C# ottenere le chiavi e valori da List <KeyValuePair <string, string>
- 27. Come verificare "isEmpty()" in Gson JsonObject?
- 28. Popolare XDocument da String
- 29. Scala FiniteDuration da String
- 30. Come ottenere l'elenco <String> come risposta da jersey2 client come risposta
Hai cercato, letto, provato qualcosa? – BoltClock
cosa 'JSONObject'? – Bozho
@Bozho ha un buon punto. Ci sono un certo numero di librerie JSON per Java, e mi aspetto che molti di loro usino quel nome di classe. –