Revenons sur la gestion de JSON avec Jackson en Java. Dans le cas de mon projet, Java est presque un système Web, et la coopération entre les servlets et JavaScript est importante. Tout d'abord, j'ai essayé de renvoyer JSON depuis le serveur cette fois. A l'exception de l'implémentation dans Servlet, la plupart des références sont détournées.
Tout d'abord, afin de convertir en JSON, il est nécessaire de créer une classe Java pour y stocker l'objet. Les propriétés de id (type de nombre), de nom (de type chaîne) et de données (tableau) sont préparées comme suit. La clé est l'annotation de @JsonProperty. Sans cela, une exception se produira.
JsonBean.java
package servletTest;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
public class JsonBean {
@JsonProperty("id")
private int id;
@JsonProperty("name")
private String name;
@JsonProperty("datas")
private List<String> datas;
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setDatas(List<String> datas) {
this.datas = datas;
}
}
Créez un objet à l'aide de la classe Java créée dans la section précédente, convertissez-le en chaîne Json avec la méthode writeValueAsString de la classe ObjectMapper et renvoyez-le au client.
SetvletTest.java
package servletTest;
import java.io.IOException;
import java.util.List;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
//Référence https://itsakura.com/java-jackson
@WebServlet("/helloworld")
public class ServletTest extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Définir la valeur dans l'objet Java
JsonBean jsonBean = new JsonBean();
jsonBean.setId(1);
jsonBean.setName("kimisyo");
List<String> datas = new ArrayList<>();
datas.add("Programmer");
datas.add("Data Scientist");
jsonBean.setDatas(datas);
ObjectMapper mapper = new ObjectMapper();
try {
//Convertir d'un objet Java en JSON
String testJson = mapper.writeValueAsString(jsonBean);
//Sortie JSON
response.getWriter().write(testJson);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
Lorsque ce qui précède est exécuté dans Eclipse, la chaîne de caractères suivante s'affiche dans le navigateur.
{"id":1,"name":"kimisyo","datas":["Programmer","Data Scientist"]}
À l'origine, il serait préférable de définir Content-Type également, mais je pense que je devrai le faire à partir de la prochaine fois, alors je l'ai reporté. À partir de la prochaine fois (le cas échéant), nous prévoyons de passer aux sujets suivants.