首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jackson JAXB JSON编组/解组

Jackson 是一个流行的 Java 库,用于处理 JSON 数据。它提供了对 JAXB(Java Architecture for XML Binding)的支持,可以轻松地将 Java 对象编组(序列化)为 JSON,以及将 JSON 解组(反序列化)为 Java 对象

依赖

首先,确保在你的项目中添加了 Jackson 的依赖。如果你使用 Maven,可以在 pom.xml 文件中添加以下依赖:

代码语言:javascript
复制
<dependencies>
    <!-- Jackson核心库 -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.0</version>
    </dependency>
    <!-- JAXB支持 -->
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-jaxb-annotations</artifactId>
        <version>2.13.0</version>
    </dependency>
</dependencies>

编组(序列化)

假设你有一个简单的 Java 类,使用了 JAXB 注解:

代码语言:javascript
复制
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Person {
    private String name;
    private int age;

    // getters and setters
}

你可以使用 Jackson 将这个类的实例编组为 JSON:

代码语言:javascript
复制
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;

public class Main {
    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JaxbAnnotationModule());

        Person person = new Person();
        person.setName("John Doe");
        person.setAge(30);

        String json = mapper.writeValueAsString(person);
        System.out.println(json);  // 输出:{"name":"John Doe","age":30}
    }
}

解组(反序列化)

同样地,你可以使用 Jackson 将 JSON 解组为 Java 对象:

代码语言:javascript
复制
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JaxbAnnotationModule());

        String json = "{\"name\":\"Jane Doe\",\"age\":25}";

        Person person = mapper.readValue(json, Person.class);
        System.out.println(person.getName());  // 输出:Jane Doe
        System.out.println(person.getAge());   // 输出:25
    }
}

注意:在实际应用中,你可能需要处理更复杂的对象图和嵌套关系。Jackson 和 JAXB 都提供了丰富的功能来处理这些情况。此外,确保你的类路径中有 JAXB 相关的类,因为 Jackson 使用 JAXB 注解来驱动序列化和反序列化过程。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 转:<mvc:annotation-driven/>的注解意义

    <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。 并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。 后面,我们处理响应ajax请求时,就使用到了对json的支持。 后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,来完成测试,取的时候要知道是<mvc:annotation-driven />这一句注册的这两个bean。

    03
    领券