要在 Java Servlet 中实现这样的 JSON 格式,需要使用一些第三方的 JSON 库,例如 Gson、Jackson 等。其中,Gson 是一个非常流行的 JSON 库。
下面是一个使用 Gson 实现的示例:
import com.google.gson.Gson;
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 java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置返回类型为 JSON
response.setContentType("application/json;charset=UTF-8");
// 创建一个存储数据的 Map
Map<String, Object> map = new HashMap<>();
map.put("status", 1);
map.put("msg", "登录成功");
Map<String, Object> data = new HashMap<>();
data.put("userAccount", 10001);
data.put("nickname", "admin");
data.put("motto", "心中无女人代码自然神");
data.put("userqq", "10001");
data.put("power", 1);
map.put("data", data);
// 使用 Gson 将数据转换为 JSON 格式
Gson gson = new Gson();
String json = gson.toJson(map);
// 将 JSON 格式的数据写回到客户端
response.getWriter().write(json);
}
}
您可以通过以下方式封装这种 JSON 格式:
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Result {
private int status;
private String msg;
private Map<String, Object> data = new HashMap<String, Object>();
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
public Result addData(String key, Object value) {
this.data.put(key, value);
return this;
}
public String toJson() throws Exception {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(this);
}
}
实现
Result result = new Result();
result.setStatus(1);
result.setMsg("登录成功");
result.addData("userAccount", 10001);
result.addData("nickname", "admin");
result.addData("motto", "心中无女人代码自然神");
result.addData("userqq", "10001");
result.addData("power", 1);
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(result.toJson());
注意:需要引入 jackson-databind 库才能使用 ObjectMapper 类。
评论 (0)