All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yahacode.hiddenblade.tool.utils.JsonUtil Maven / Gradle / Ivy

package com.yahacode.hiddenblade.tool.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * json format utilities
 *
 * @author zengyongli
 * @since 2022/04/13
 */
public class JsonUtil {

    private static final Logger log = LoggerFactory.getLogger(JsonUtil.class);

    private static ObjectMapper mapper;

    private static ObjectMapper getMapper() {
        if (mapper == null) {
            mapper = new ObjectMapper();
            JavaTimeModule javaTimeModule = new JavaTimeModule();
            javaTimeModule.addSerializer(LocalDateTime.class, ToStringSerializer.instance);
            mapper.registerModule(javaTimeModule);
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        }
        return mapper;
    }

    public static String toStr(Object object) {
        try {
            return getMapper().writeValueAsString(object);
        } catch (JsonProcessingException e) {
            log.warn("object to String fail, object: {}", object.toString(), e);
            return null;
        }
    }

    public static  T toObj(String jsonString, Class clazz) {
        try {
            return getMapper().readValue(jsonString, clazz);
        } catch (JsonProcessingException e) {
            log.warn("String to object fail, String: " + jsonString + ", type: " + clazz.getSimpleName(), e);
            return null;
        }
    }

    public static  List toList(String jsonString, Class clazz) {
        try {
            JavaType javaType = getMapper().getTypeFactory().constructParametricType(ArrayList.class, clazz);
            return getMapper().readValue(jsonString, javaType);
        } catch (JsonProcessingException e) {
            log.warn("String to list fail, String: {}, type: {}", jsonString, clazz.getSimpleName(), e);
            return null;
        }
    }

    public static JsonNode toJsonNode(String jsonString) {
        try {
            return getMapper().readTree(jsonString);
        } catch (Exception e) {
            log.warn("String to node fail, String: {}", jsonString, e);
            return null;
        }
    }

    public static JsonNode objToJsonNode(Object obj) {
        try {
            return toJsonNode(toStr(obj));
        } catch (Exception e) {
            log.warn("obj to node fail, obj: {}", obj.toString(), e);
            return null;
        }
    }

    public static List toJsonNodeList(String jsonString) {
        JsonNode node = toJsonNode(jsonString);
        if (node != null && node.isArray()) {
            List list = new ArrayList<>();
            Iterator iterator = node.elements();
            while (iterator.hasNext()) {
                list.add(iterator.next());
            }
            return list;
        } else {
            log.warn("String to node list fail, String: {}", jsonString);
            return null;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy