Programing

Java 서블릿에서 JSON 객체를 반환하는 방법

lottogame 2020. 6. 10. 23:11
반응형

Java 서블릿에서 JSON 객체를 반환하는 방법


Java 서블릿에서 JSON 객체를 어떻게 반환합니까?

이전에는 서블릿으로 AJAX를 수행 할 때 문자열을 반환했습니다. 사용해야하는 JSON 객체 유형이 있습니까, 아니면 JSON 객체처럼 보이는 문자열을 반환합니까?

String objectToReturn = "{ key1: 'value1', key2: 'value2' }";

나는 당신이 제안한 것을 정확하게 수행합니다 ( String).

그래도 JSON을 반환한다는 것을 나타내도록 MIME 유형을 설정하는 것을 고려할 수 있습니다 ( 이 다른 스택 오버플로 게시물 에 따르면 "application / json"임).


JSON 객체를 응답 객체의 출력 스트림에 씁니다.

또한 컨텐츠 유형을 다음과 같이 설정해야합니다. 그러면 리턴 할 내용이 지정됩니다.

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();

먼저 JSON 객체를로 변환하십시오 String. 그런 다음 컨텐츠 유형 application/json및 UTF-8의 문자 인코딩 과 함께 응답 기록기에 작성하십시오 .

다음은 Google Gson사용하여 Java 객체를 JSON 문자열로 변환 한다고 가정하는 예입니다 .

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);
}

그게 다야.

또한보십시오:


Java 서블릿에서 JSON 객체를 반환하는 방법

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());

출력 스트림에 문자열을 작성하십시오. 도움이 필요하면 MIME 유형을 text/javascript( 편집 : application/json명백히 공식적으로) 설정할 수 있습니다 . (언제나 언젠가는 엉망이 될 가능성이 있으며 좋은 방법입니다.)


Gson은 이것에 매우 유용합니다. 더 쉽게. 여기 내 예가 있습니다.

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}]}

Have to say people if yours vars are empty when using gson it wont build the json for you.Just the

{}


I used Jackson to convert Java Object to JSON string and send as follows.

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();

There might be a JSON object for Java coding convenience. But at last the data structure will be serialized to string. Setting a proper MIME type would be nice.

I'd suggest JSON Java from json.org.


Depending on the Java version (or JDK, SDK, JRE... i dunno, im new to the Java ecosystem), the JsonObject is abstract. So, this is a new implementation:

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());
}

response.setContentType("text/json");

//create the JSON string, I suggest using some framework.

String your_string;

out.write(your_string.getBytes("UTF-8"));


Close to BalusC answer in 4 simple lines using Google Gson lib. Add this lines to the servlet method:

User objToSerialize = new User("Bill", "Gates");    
ServletOutputStream outputStream = response.getOutputStream();

response.setContentType("application/json;charset=UTF-8");
outputStream.print(new Gson().toJson(objToSerialize));

Good luck!


By Using Gson you can send json response see below code

You can see this code

@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();
    }

  }
}

helpful from json response from servlet in java

참고URL : https://stackoverflow.com/questions/2010990/how-do-you-return-a-json-object-from-a-java-servlet

반응형