在SSM(Spring、Spring MVC、MyBatis)框架中使用JSON是一种常见的需求,因为JSON格式的数据交换在现代Web应用中非常流行,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,在SSM框架中,我们可以通过多种方式来处理和使用JSON数据。

JSON处理工具

我们需要一个JSON处理工具,比如Jackson或Gson,这些库可以帮助我们将Java对象转换为JSON字符串,或者将JSON字符串解析为Java对象。

使用Jackson

在Spring框架中,我们可以通过Jackson库来处理JSON,Spring MVC默认支持Jackson,所以如果你的项目中已经集成了Spring MVC,那么使用Jackson将会非常方便。

添加依赖

在Maven项目的pom.xml文件中添加Jackson的依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.3</version>
</dependency>

转换Java对象为JSON

在控制器(Controller)中,我们可以使用Jackson提供的ObjectMapper来将Java对象转换为JSON字符串:

import com.fasterxml.jackson.databind.ObjectMapper;
@Controller
public class MyController {
    @RequestMapping("/convertToJson")
    public void convertToJson() {
        MyObject obj = new MyObject();
        // 设置对象属性
        ObjectMapper mapper = new ObjectMapper();
        try {
            String json = mapper.writeValueAsString(obj);
            // 将json字符串返回给客户端
            System.out.println(json);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

解析JSON为Java对象

同样地,我们可以使用ObjectMapper来解析JSON字符串为Java对象:

import com.fasterxml.jackson.databind.ObjectMapper;
@Controller
public class MyController {
    @RequestMapping("/parseFromJson")
    public void parseFromJson(String json) {
        ObjectMapper mapper = new ObjectMapper();
        try {
            MyObject obj = mapper.readValue(json, MyObject.class);
            // 使用解析后的对象
            System.out.println(obj);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用Gson

Gson是另一个流行的JSON处理库,它提供了与Jackson类似的功能。

添加依赖

在Maven项目的pom.xml文件中添加Gson的依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

转换Java对象为JSON

使用Gson将Java对象转换为JSON字符串:

import com.google.gson.Gson;
@Controller
public class MyController {
    @RequestMapping("/convertToJson")
    public void convertToJson() {
        MyObject obj = new MyObject();
        // 设置对象属性
        Gson gson = new Gson();
        String json = gson.toJson(obj);
        // 将json字符串返回给客户端
        System.out.println(json);
    }
}

解析JSON为Java对象

使用Gson解析JSON字符串为Java对象:

import com.google.gson.Gson;
@Controller
public class MyController {
    @RequestMapping("/parseFromJson")
    public void parseFromJson(String json) {
        Gson gson = new Gson();
        MyObject obj = gson.fromJson(json, MyObject.class);
        // 使用解析后的对象
        System.out.println(obj);
    }
}

2. 在Spring MVC中返回JSON

在Spring MVC中,我们可以直接返回一个对象,框架会自动将其转换为JSON格式的响应体,这通常是通过在控制器方法上添加@ResponseBody注解来实现的。

@Controller
public class MyController {
    @RequestMapping("/getJson")
    @ResponseBody
    public MyObject getJson() {
        MyObject obj = new MyObject();
        // 设置对象属性
        return obj;
    }
}

接收JSON请求体

我们也可以在控制器方法中接收JSON格式的请求体,这通常是通过在方法参数上添加@RequestBody注解来实现的。

@Controller
public class MyController {
    @RequestMapping("/receiveJson")
    public String receiveJson(@RequestBody MyObject obj) {
        // 使用接收到的对象
        System.out.println(obj);
        return "success";
    }
}

4. 配置Spring MVC以支持JSON

为了确保Spring MVC能够正确处理JSON,我们需要在Spring的配置文件中添加对HttpMessageConverter的支持。

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean class="com.fasterxml.jackson.databind.ObjectMapper"/>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

通过上述步骤,我们可以在SSM框架中灵活地使用JSON数据,无论是在客户端与服务器之间的数据交换,还是在服务器内部的数据转换,这种方式使得数据的处理更加高效和灵活,同时也简化了代码的编写和维护。