java servlet实现将hashmap转换数组

渡星河
2023-02-12 / 0 评论 / 14 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月12日,已超过585天没有更新,若内容或图片失效,请留言反馈。

要在 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 类。
1

评论 (0)

取消