使用JackSon将对象和集合转为Json

本文介绍如何利用Jackson库将Java对象及集合转换成JSON格式。通过具体示例演示了创建ObjectMapper对象并调用writeValueAsString方法的过程。同时展示了如何处理包含多个属性的对象及集合类型的转换。

使用JackSon将对象和集合转为Json


首先三个jar
这里写图片描述


demo

package com.xieth.test;

import java.util.Arrays;
import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Customer {

    private String name;
    private String id;

    public String getCustomerName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getCity() {
        return "BeiJing";
    }

    public String getBirth(){
        return "1990-12-12";
    }

    public Customer() {
        super();
    }

    public Customer(String name, String id) {
        super();
        this.name = name;
        this.id = id;
    }

    public static void main(String[] args) {
        // 1. 导入jar包
        // 2. 创建 ObjectMapper 对象
        ObjectMapper mapper= new ObjectMapper();

        // 3. 调用 writeValueAsString 方法把一个对象 转为
        Customer customer = new Customer("xth", "1001");
        try {
            // Jackson 通过 getter 方法来定位 JSON 对象的属性
            String jsonStr = mapper.writeValueAsString(customer);
            // 可以 通过注解的方式来忽略 getter 定义的属性
//          System.out.println(jsonStr);
            // 集合的方式
            List<Customer> customers = Arrays.asList(customer, new Customer("YR", "1002"));
            jsonStr = mapper.writeValueAsString(customers);
            System.out.println(jsonStr);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }

    }
}

运行

[{"id":"1001","customerName":"xth","birth":"1990-12-12","city":"BeiJing"},{"id":"1002","customerName":"YR","birth":"1990-12-12","city":"BeiJing"}]

### `@RequestMapping` 注解的数据处理机制 `@RequestMapping` 注解在 Spring MVC 中主要用于将 HTTP 请求映射到控制器方法上,但它本身并不直接负责数据的换或序列化操作。当请求到达控制器方法时,Spring 会根据请求的内容类型(如 application/json方法参数的注解(如 `@RequestBody` 或 `@RequestParam`)来决定如何解析绑定数据。 如果方法参数使用了 `@RequestBody` 注解,则 Spring 会调用合适的 `HttpMessageConverter` 来将请求体中的内容(例如 JSON 格式的数据)反序列化为 Java 对象。这个过程通常涉及将 JSON 数据换为 Map 集合或其他 Java 类型,但具体实现依赖于配置的消息换器,例如 Jackson 或 Gson[^1]。 返回值的处理与之类似。如果方法返回一个对象而不是视图名称,并且类或方法上使用了 `@ResponseBody` 注解,则 Spring 会再次通过 `HttpMessageConverter` 将返回的对象序列化为 JSON 或其他格式,并将其写入 HTTP 响应中。此时,Java 对象会被换为 Map 形式的数据结构,然后进一步换为 JSON 字符串[^2]。 需要注意的是,这种换机制是可扩展的,开发者可以通过自定义 `HttpMessageConverter` 实现特定的数据处理逻辑。此外,`@RestController` 是 `@Controller` `@ResponseBody` 的组合注解,它简化了 RESTful Web 服务的开发,使得所有返回值都会自动序列化为响应内容[^3]。 ### 示例代码 以下是一个使用 `@RequestBody` `@ResponseBody` 的示例: ```java @RestController @RequestMapping("/api") public class ApiController { @PostMapping("/data") public Map<String, Object> processData(@RequestBody Map<String, Object> input) { Map<String, Object> output = new HashMap<>(); output.put("received", input); return output; } } ``` 在此示例中,`@RequestBody` 表示 Spring 会将请求体中的 JSON 数据反序列化为 Map 对象;而 `@ResponseBody` 则表示返回的 Map 对象将被序列化为 JSON 并作为响应返回给客户端。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值