springboot使⽤内部类接收复杂的json结构多层嵌套JSON类型的解析springboot 使⽤内部类接收复杂的json结构
背景 最近接到⼀个需求,是对上传的json⽂件进⾏解析,上传的json⽂件,⾥⾯内容结构⽐较复杂,即⼀个实体引⽤另⼀个实体,需要定义很多的实体去接收,实体太多,做法不是很优雅。这⾥使⽤内部类的写法去接收复杂的json数据结构,内部类⾥⾯还能嵌套内部类,不管多复杂,⼀个实体都可以搞定。
JSON⽂件内容结构如下图:
定义实体
public class Demo {
private String name;
private RequestObj request;
private List<Object> response;
/**
* 此处省略 getter 、setter 和toString
*
* @return
*/
// 定义内部类
public static class RequestObj {
private String method;
private List<RequestHeader> header;
private RequestUrl url;
private RequestBody body;
/**
* 此处省略 getter 和setter
*/
// 嵌套定义内部类
public static class RequestHeader {
/**
* 代码省略
*/
}
// 嵌套定义内部类
public static class RequestUrl {
/**
* 代码省略
*/
}
// 嵌套定义内部类
public static class RequestBody {
/
**
* 代码省略
*/
}
}
}
Controller 层
这篇⽂章是demo⽰例,就不写service层那些了。直接⽤controller层接收上传的json⽂件,并进⾏解析,代码如下。
/**
* 上传JSON数据并解析
*
* @param file
* @return
*/
@PostMapping(value ="/uploadJson", produces ="application/json;charset=UTF-8")
public CommonResp uploadPostmanFileFromJson(@RequestParam(value ="file") MultipartFile mappingFile){ InputStream is =null;
BufferedReader br =null;
StringBuffer sb =new StringBuffer();
String str =null;
try{
is = InputStream();
br =new BufferedReader(new InputStreamReader(is));
while((str = br.readLine())!=null){
sb.append(str);
}
}catch(IOException e){
springboot结构e.printStackTrace();
}finally{
try{
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
// 将数据转成json类型
JSONObject jsonObject = JSONObject.String());
// 取出item对象,组装json数组
JSONArray jsonArray = JSONArray("item");
// 将json数组转成List形式
List<Demo> requestItems = JSONObject.JSONString(), Demo.class);
CommonResp resp =new CommonResp();
resp.setContent(requestItems);
return resp;
}
使⽤postman进⾏测试
CommonResp 是定义的返回实体,就不贴代码了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论