"springmvc接收json串,转换为实体类List方法"主要分为以下几步:
- 接收请求并获取JSON数据
- 创建实体类
- 创建Controller方法
- 将JSON转换为实体类
- 返回Json数据
具体操作如下:
1. 接收请求并获取JSON数据
首先,我们需要创建一个POST请求来接收JSON数据
@RequestMapping(value = "/getList", method = RequestMethod.POST)
@ResponseBody
public String getList(HttpServletRequest request) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
String jsonStr = "";
if(br != null){
jsonStr = br.readLine();
}
return jsonStr;
}
这个方法会返回一个String类型的JSON数据
2. 创建实体类
然后我们需要根据JSON数据来创建一个实体类,并加上注解
public class MyObject {
@JsonProperty("id")
private Integer id;
@JsonProperty("name")
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
其中,@JsonProperty注解将JSON里的键值对映射到实体类的对应属性上
3. 创建Controller方法
接下来,我们需要在Controller里创建一个方法来处理这个JSON数据,并将它转换为实体类
@RequestMapping(value = "/getList", method = RequestMethod.POST)
@ResponseBody
public List<MyObject> getList(@RequestBody String data){
ObjectMapper objectMapper=new ObjectMapper();
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, MyObject.class);
List<MyObject> myObjectList = null;
try {
myObjectList = objectMapper.readValue(data, javaType);
} catch (IOException e) {
e.printStackTrace();
}
return myObjectList;
}
这个方法还需要用到jackson库,需要在pom文件中添加:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.4</version>
</dependency>
其中,@RequestBody注解表示接收请求体参数,而不是URL参数或header参数
4. 将JSON转换为实体类
我们需要用ObjectMapper来将JSON转换为实体类
ObjectMapper objectMapper=new ObjectMapper();
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, MyObject.class);
List<MyObject> myObjectList = null;
try {
myObjectList = objectMapper.readValue(data, javaType);
} catch (IOException e) {
e.printStackTrace();
}
其中,JavaType表示泛型类。第一个参数是List.class,第二个参数是MyObject.class
5. 返回Json数据
最后,我们需要将实体类转换为JSON并返回
ObjectMapper objectMapper=new ObjectMapper();
String jsonStr = "";
try {
jsonStr = objectMapper.writeValueAsString(myObjectList);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return jsonStr;
这里同样需要用到ObjectMapper,将List
示例1:
假设我们有一个JSON格式的字符串:
[{"id":1,"name":"张三"},{"id":2,"name":"李四"},{"id":3,"name":"王五"}]
调用getList方法后返回的数组:
[{"id":1,"name":"张三"},{"id":2,"name":"李四"},{"id":3,"name":"王五"}]
示例2:
假设我们有一个JSON格式的字符串:
[{"id":4,"name":"赵六"},{"id":5,"name":"孙七"}]
调用getList方法后返回的数组:
[{"id":4,"name":"赵六"},{"id":5,"name":"孙七"}]
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springmvc接收json串,转换为实体类List方法 - Python技术站