JackSon的使用

1.目的

实现  bean 于jsonString 的转换

2.引入

maven依赖如下

  <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.10.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.10.0</version>
        </dependency>

 

也可自己上maven库,自己搜索有关jackson的三个依赖

 

3.实体类

1. getter和setter必须有

    我这里用的是   lombok 工具代替的,  可自行百度或直接写 getter, setter方法

@Getter
@Setter
class  Teacher{
    String name;
    int age;

    public Teacher(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //必须要
    public Teacher() {
    }

    @Override
    public String toString() {
       return  name + " "  + age ;
    }
}

2.默认构造函数必须有

写了自定义的构造器,默认的构造器会被覆盖,这时可以自己再把默认(无参)构造器再写一遍。

 

4.工具类
 

package com.ybj.cbt.utils;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;


public final class JacksonUtils {

    public static ObjectMapper objectMapper;

    public static String objectToJsonString(Object object) {
        if (objectMapper == null) {
            objectMapper = new ObjectMapper();
        }
        try {
            return objectMapper.writeValueAsString(object);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     *  使用 泛型 
     * @param jsonStr
     * @param valueType
     * @param <T>
     * @return
     */
    public static <T> T stringToObject(String jsonStr, Class<T> valueType) {
        if (objectMapper == null) {
            objectMapper = new ObjectMapper();
            objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
        }
        try {
            return objectMapper.readValue(jsonStr, valueType);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


}

5.测试类

package com.ybj.cbt.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Getter;
import lombok.Setter;
import org.junit.Test;


public class JacksonUtilsTest {


    /**
     *  对象转String
     */
    @Test
    public void objectToString(){
        Teacher teacher=new Teacher("张三", 11);
//        teacher.setName("张三");
//        teacher.setAge(11);
        String s = JacksonUtils.objectToJsonString(teacher);
        System.out.println("s = " + s);
    }

    /**
     *  String  转  object
     */
    @Test
    public void stringToObject() {
        String jsonString = "{'name':'张三' , 'age':26}";
        ObjectMapper objectMapper = new ObjectMapper();
        Teacher teacher=JacksonUtils.stringToObject(jsonString,Teacher.class);
        System.out.println("teacher = " + teacher);
    }

    /**
     *  jsonString 数组  转   object数组
     */
    @Test
    public void StringArrayToObjectArray() throws JsonProcessingException {
        String jsonString = "[{'name':'张三' , 'age':26},{'name':'李四' , 'age':29}]";
        ObjectMapper objectMapper = new ObjectMapper();
        Teacher[] teacherList = JacksonUtils.stringToObject(jsonString, Teacher[].class);
        for (Teacher teacher : teacherList) {
          System.out.println(teacher.toString());
        }
    }

}


@Getter
@Setter
class  Teacher{
    String name;
    int age;

    public Teacher(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Teacher() {
    }

    @Override
    public String toString() {
       return  name + " "  + age ;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值