Hoe retourneer je een JSON-object van een Java-servlet.
Voorheen heb ik bij het doen van AJAX met een servlet een string geretourneerd. Is er een JSON-objecttype dat moet worden gebruikt, of retourneert u gewoon een String die eruitziet als een JSON-object, b.v.
String objectToReturn = "{ key1: 'value1', key2: 'value2' }";
Antwoord 1, autoriteit 100%
Schrijf het JSON-object naar de uitvoerstroom van het responsobject.
U moet ook het inhoudstype als volgt instellen, dat specificeert wat u retourneert:
response.setContentType("application/json");
// Get the printwriter object from response to write the required json object to the output stream
PrintWriter out = response.getWriter();
// Assuming your json object is **jsonObject**, perform the following, it will return your json object
out.print(jsonObject);
out.flush();
Antwoord 2, autoriteit 47%
Converteer eerst het JSON-object naar String
. Schrijf het vervolgens naar de antwoordschrijver, samen met het inhoudstype application/json
en de tekencodering van UTF-8.
Hier is een voorbeeld, ervan uitgaande dat u Google Gsongebruikt om een Java-object naar een JSON-tekenreeks te converteren:
protected void doXxx(HttpServletRequest request, HttpServletResponse response) {
// ...
String json = new Gson().toJson(someObject);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
Dat is alles.
Zie ook:
Antwoord 3, autoriteit 32%
Ik doe precies wat je voorstelt (retourneer een String
).
U kunt echter overwegen het MIME-type in te stellen om aan te geven dat u JSON retourneert (volgens deze andere stackoverflow posthet is “application/json”).
Antwoord 4, autoriteit 18%
Hoe retourneert u een JSON-object van een Java-servlet
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
//create Json Object
JsonObject json = new JsonObject();
// put some value pairs into the JSON object .
json.addProperty("Mobile", 9999988888);
json.addProperty("Name", "ManojSarnaik");
// finally output the json string
out.print(json.toString());
Antwoord 5, autoriteit 6%
Ik heb Jacksongebruikt om Java Object naar JSON-tekenreeks te converteren en als volgt te verzenden.
PrintWriter out = response.getWriter();
ObjectMapper objectMapper= new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(MyObject);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
out.print(jsonString);
out.flush();
Antwoord 6, autoriteit 4%
Schrijf gewoon een string naar de uitvoerstroom. Je zou het MIME-type kunnen instellen op text/javascript
(edit: application/json
is blijkbaar officieel) als je je nuttig voelt. (Er is een kleine maar niet-nul kans dat het op een dag iets verpest, en het is een goede gewoonte.)
Antwoord 7, autoriteit 4%
Gson is hier erg handig voor. makkelijker zelfs.
hier is mijn voorbeeld:
public class Bean {
private String nombre="juan";
private String apellido="machado";
private List<InnerBean> datosCriticos;
class InnerBean
{
private int edad=12;
}
public Bean() {
datosCriticos = new ArrayList<>();
datosCriticos.add(new InnerBean());
}
}
Bean bean = new Bean();
Gson gson = new Gson();
String json =gson.toJson(bean);
out.print(json);
{“nombre”:”juan”,”apellido”:”machado”,”datosCriticos”:[{“edad”:12}]}
Ik moet zeggen dat mensen als de jouwe vars leeg zijn bij gebruik van gson, de json niet voor je zal bouwen. Alleen de
{}
Antwoord 8, autoriteit 4%
Er is mogelijk een JSON-object voor het gemak van Java-codering. Maar uiteindelijk wordt de datastructuur geserialiseerd naar string. Een correct MIME-type instellen zou fijn zijn.
Antwoord 9, autoriteit 4%
Afhankelijk van de Java-versie (of JDK, SDK, JRE… ik weet het niet, ik ben nieuw in het Java-ecosysteem), het JsonObject
is abstract. Dit is dus een nieuwe implementatie:
import javax.json.Json;
import javax.json.JsonObject;
...
try (PrintWriter out = response.getWriter()) {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
JsonObject json = Json.createObjectBuilder().add("foo", "bar").build();
out.print(json.toString());
}
Antwoord 10, autoriteit 2%
response.setContentType(“text/json”);
//maak de JSON-tekenreeks, ik raad aan om een raamwerk te gebruiken.
String your_string;
out.write(your_string.getBytes(“UTF-8”));
Antwoord 11
Je mag hieronder liken gebruiken.
Als u json-array wilt gebruiken:
- download json-simple-1.1.1.jar& voeg toe aan je projectklassenpad
-
Maak een klasse met de naam Modelzoals hieronder
public class Model { private String id = ""; private String name = ""; //getter sertter here }
-
In sevlet getMethod die je kunt gebruiken zoals hieronder
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //begin get data from databse or other source List<Model> list = new ArrayList<>(); Model model = new Model(); model.setId("101"); model.setName("Enamul Haque"); list.add(model); Model model1 = new Model(); model1.setId("102"); model1.setName("Md Mohsin"); list.add(model1); //End get data from databse or other source try { JSONArray ja = new JSONArray(); for (Model m : list) { JSONObject jSONObject = new JSONObject(); jSONObject.put("id", m.getId()); jSONObject.put("name", m.getName()); ja.add(jSONObject); } System.out.println(" json ja = " + ja); response.addHeader("Access-Control-Allow-Origin", "*"); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.getWriter().print(ja.toString()); response.getWriter().flush(); } catch (Exception e) { e.printStackTrace(); } }
-
Uitvoer:
[{"name":"Enamul Haque","id":"101"},{"name":"Md Mohsin","id":"102"}]
Als je een json-object wilt, gebruik dan gewoon:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
JSONObject json = new JSONObject();
json.put("id", "108");
json.put("name", "Enamul Haque");
System.out.println(" json JSONObject= " + json);
response.addHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().print(json.toString());
response.getWriter().flush();
// System.out.println("Response Completed... ");
} catch (Exception e) {
e.printStackTrace();
}
}
Boven functie Uitvoer:
{"name":"Enamul Haque","id":"108"}
Volledige bron wordt aan GitHub gegeven: https://github.com/enamul95/ServeletJson.git
Antwoord 12
Dicht bij BalusCantwoord in 4 eenvoudige regels met Google Gson lib. Voeg deze regels toe aan de servlet-methode:
User objToSerialize = new User("Bill", "Gates");
ServletOutputStream outputStream = response.getOutputStream();
response.setContentType("application/json;charset=UTF-8");
outputStream.print(new Gson().toJson(objToSerialize));
Veel succes!
Antwoord 13
Door Gson te gebruiken, kunt u een json-antwoord sturen, zie onderstaande code
Je kunt deze code zien
@WebServlet(urlPatterns = {"/jsonResponse"})
public class JsonResponse extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
Student student = new Student(12, "Ram Kumar", "Male", "1234565678");
Subject subject1 = new Subject(1, "Computer Fundamentals");
Subject subject2 = new Subject(2, "Computer Graphics");
Subject subject3 = new Subject(3, "Data Structures");
Set subjects = new HashSet();
subjects.add(subject1);
subjects.add(subject2);
subjects.add(subject3);
student.setSubjects(subjects);
Address address = new Address(1, "Street 23 NN West ", "Bhilai", "Chhattisgarh", "India");
student.setAddress(address);
Gson gson = new Gson();
String jsonData = gson.toJson(student);
PrintWriter out = response.getWriter();
try {
out.println(jsonData);
} finally {
out.close();
}
}
}
behulpzaam van json-reactie van servlet in java