Servlet项目笔记之常用的req处理方法

本文使用到阿里巴巴的fastjson,相关配置自行百度。

处理数组格式的数据


如图,前端以数组的方式传递node_info过来,后端的处理方法如下:
前提:初始化一些字符集信息,代码如下:

req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json; charset=UTF-8"); //建议浏览器解码使用该字符集
resp.setHeader("Access-Control-Allow-Origin", "*");
  1. 字符流形式接收数据
BufferedReader bufferedReader = req.getReader();//声明字符输入流
String str = "";
String data = "";
//获取字符输入流
while ((str = bufferedReader.readLine()) != null) {
            data = data + str ;
}
System.out.println(data);

此时打印出来的数据形式如下:

可以看到这跟前端的原始JSON数据一模一样,但是类型却不是JSON,而是String

因此需要进行类型转换,把字符集中默认的String类型转换成JSONObject类型
2. 类型转换

代码如下:

 JSONObject jsonObject_data = JSONObject.parseObject(data); //把字符输入流转成Json格式
  1. 截取字段

    我们看看截取前后的结果对比:


    截取完字段后类型又变回String类型,我们要转成JSONArray类型

    代码如下:
JSONArray nodeArray = JSONArray.parseArray(node_info);  //String转JSONArray
  1. 操作数组
JSONArray nodeArray = JSONArray.parseArray(node_info);  //String转JSONArray
Object o = nodeArray.toArray()[0];
System.out.println(o);

效果如下:

5. 取数组的字段

处理标准的JSON格式的数据

  1. 前面的步骤一样,直接贴代码:
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json; charset=UTF-8"); //建议浏览器解码使用该字符集
resp.setHeader("Access-Control-Allow-Origin", "*");

BufferedReader bufferedReader = req.getReader();//声明字符输入流
String str = "";
String data = "";
//获取字符输入流
while ((str = bufferedReader.readLine()) != null) {
            data = data + str ;
}
JSONObject jsonObject_data = JSONObject.parseObject(data); //把字符输入流转成Json格式
String node_info = jsonObject_data.getString("node_info");
System.out.println(node_info);


2. 接下来转成JSONObject类型
先说一下JSONObjectJSONArray的区别:
JSONObject是{x,x,x}、而JSONArray是[x,x,x]
上面是处理数组所以转成了JSONArray,而这次我们处理的是对象,所以要转成JSONObject
代码如下:

JSONObject jsonObject_node_info = JSONObject.parseObject(node_info);
  1. JSONObject中的非数组字段,非数组字段如下图:


    代码如下:
String uid = jsonObject_node_info.getString("uid");
System.out.println(uid);


4. 取数组字段

String sensor_info = JSONObject.parseObject(jsonObject_node_info.toString()).getString("sensor_info");
JSONArray sensor_array = JSONArray.parseArray(sensor_info);  //String转JSONArray
System.out.println(sensor_array);


接下来的处理过程跟上面的处理数组格式数据一模一样,这里不再重复了

发布了109 篇原创文章 · 获赞 2 · 访问量 1227

猜你喜欢

转载自blog.csdn.net/qq_42528769/article/details/104426056