Servlet从请求中获取json并返回json

要使用json,需要导入fastjson-1.1.34.jar,官网下载地址:https://sourceforge.net/projects/fastjson/files/

封装一个处理http请求获取json参数的工具类:

package test;

import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

public class HttpGetJson {
    public static JSONObject getJson(HttpServletRequest request){
        StringBuilder result = new StringBuilder();
        BufferedReader in = null;
        try{
            in = new BufferedReader(new InputStreamReader(request.getInputStream(),StandardCharsets.UTF_8));
            String line;
            while((line = in.readLine()) != null){
                result.append(line);
            }
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            try{
                if(in != null){
                    in.close();
                }
            }catch(IOException e){
                e.printStackTrace();
            }
        }
        return (JSONObject) JSONObject.parse(result.toString());
    }
}

Servlet 的doGet或者doPost方法中获取request的json数据:

JSONObject data = HttpGetJson.getJson(request);
        if(data != null) {
            //业务处理,例如:System.out.println("id-->" + data.get("id"));
            //利用get就能从json取出对应的键值对。
        }

在处理完业务之后,如果需要返回json:

JSONObject res = new JSONObject();
res.put("code",200);
res.put("id",id);
response.getWriter().write(String.valueOf(res));

这样Servlet就可以从请求中获取json并返回json了。
doPost代码示例:

package test;

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 com.alibaba.fastjson.JSONObject;

@WebServlet("/Demo")
public class Demo extends HttpServlet {
    protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {
        response.setContentType("application/json;charset=utf-8");
        //获取json数据
        JSONObject data = HttpGetJson.getJson(request);
        Object id = null;
        Object name = null;
        Object status = null;
        int flag = 500;
        if(data != null) {
            id = data.get("id");
            name = data.get("name");
            status = data.get("status");
            flag = 200;
        }
        //返回json数据
        JSONObject res = new JSONObject();
        res.put("code",flag);
        res.put("id",id);
        res.put("name",name);
        res.put("status",status);
        response.getWriter().write(String.valueOf(res));
    }
}

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值