springmvc接收json串,转换为实体类List方法

springmvc接收json串,转换为实体类List方法主要分为以下几步:

"springmvc接收json串,转换为实体类List方法"主要分为以下几步:

  1. 接收请求并获取JSON数据
  2. 创建实体类
  3. 创建Controller方法
  4. 将JSON转换为实体类
  5. 返回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类型转换成JSON字符串

示例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方法

基础教程推荐