import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class JsonUtils {
private static ObjectMapper objectMapper = new ObjectMapper();
public static String toJson(Object data) {
String ret = null;
try {
ret = objectMapper.writeValueAsString(data);
} catch (Exception e) {
log.error("toJson() happen error, ex=", e.getMessage(), e);
}
return ret;
}
public static <T> T toEntity(String jsonStr, Class<T> beanType) {
T ret = null;
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ret = (T) objectMapper.readValue(jsonStr, beanType);
} catch (Exception e) {
ret = null;
log.error("toEntity(jsonStr, beanType) happen error, ex=", e.getMessage(), e);
}
return ret;
}
@SuppressWarnings("unchecked")
public static <T> T toListEntity(String jsonStr, Class<T> beanType) {
T ret = null;
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ret = (T) objectMapper.readValue(jsonStr, getCollectionType(objectMapper, List.class, beanType));
} catch (Exception e) {
ret = null;
log.error("toListEntity(jsonStr, beanType) happen error, ex=", e.getMessage(), e);
}
return ret;
}
public static JavaType getCollectionType(ObjectMapper mapper,Class<?> collectionClass, Class<?>... elementClasses) {
return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}
public static <T> T toEntity(String jsonStr) {
T ret = null;
try {
TypeReference<T> jsonType = new TypeReference<T>() {
};
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ret = (T) objectMapper.readValue(jsonStr, jsonType);
} catch (Exception e) {
ret = null;
log.error("toEntity(jsonStr) happen error, ex=", e.getMessage(), e);
}
return ret;
}
}
调用方式:
DdCancelAuthUserCuid ddCancelAuthUserCuid = JsonUtils.toEntity(retHttp.returnData, DdCancelAuthUserCuid.class);
List<DdCancleAuthBankCardInfo> DdCancelAuthUserCuid = ddCancleAuthBankCardInfo = (List<DdCancleAuthBankCardInfo>)JsonUtils.toListEntity(retHttp.returnData, DdCancleAuthBankCardInfo.class);