Java使用ObjectMapper做數據轉換的常用工具類實現


1.介紹

ObjectMapper類是Jackson庫的主要類,它提供一些功能將數據集或對象轉換的實現

2.依賴包

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.5</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.9.5</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.9.5</version>
</dependency>

3.工具類實現

package org.tempuri;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public class JsonUtils {
    
    private static ObjectMapper mapper = new ObjectMapper();
    
    static {
        //序列化的時候序列對象的所有屬性
        mapper.setSerializationInclusion(Include.ALWAYS);

        //反序列化的時候如果多了其他屬性,不拋出異常
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

        //如果是空對象的時候,不拋異常
        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);

        //取消時間的轉化格式,默認是時間戳,可以取消,同時需要設置要表現的時間格式
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
    }

    /**
      * 對象轉為Json字符串
     * @param data
     * @return
     */
    public static String transferToJson(Object data) {
        String jsonStr = null;
        try {
            jsonStr = mapper.writeValueAsString(data);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return jsonStr;
    }
    
    /**
      * 對象轉為byte數組
     * @param data
     * @return
     */
    public static byte[] transferToBytes(Object data) {
        byte[] byteArr = null;
        try {
            byteArr = mapper.writeValueAsBytes(data);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return byteArr;
    }
    
    /**
     * json字符串轉為對象
     * @param str
     * @param valueType
     * @return
     */
    public static <T> T jsonToTransfer(String str, Class<T> valueType) {
        T data = null;
        try {
            data = mapper.readValue(str, valueType);
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return data;
    }
    
    /**
     * byte數組轉為對象
     * @param byteArr
     * @param valueType
     * @return
     */
    public static <T> T bytesToTransfer(byte[] byteArr, Class<T> valueType) {
        T data = null;
        try {
            data = mapper.readValue(byteArr, valueType);
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return data;
    }
    
    public static void main(String[] args) {
        List<Map<String, String>> list = new ArrayList<>();
        Map<String, String> map1 = new HashMap<>();
        map1.put("id", "1");
        map1.put("name", "我是一");
        list.add(map1);
        Map<String, String> map3 = new HashMap<>();
        map3.put("id", "3");
        map3.put("name", "我是三");
        list.add(map3);
        Map<String, String> map2 = new HashMap<>();
        map2.put("id", "2");
        map2.put("name", "我是二");
        list.add(map2);
        System.out.println(list);
        System.out.println(transferToJson(list));
    }
    
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM