You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
4.9 KiB
169 lines
4.9 KiB
package com.ynxbd.common.helper.common;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.TypeReference;
|
|
import com.alibaba.fastjson.serializer.PascalNameFilter;
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* FastJson操作类
|
|
*/
|
|
@Slf4j
|
|
public class JsonHelper {
|
|
|
|
public static <T> T copy(Object obj, Class<T> clazz) {
|
|
String dataJson = JSON.toJSONString(obj);
|
|
return JSON.parseObject(dataJson, clazz);
|
|
}
|
|
|
|
|
|
public static String toJsonString(Object data) {
|
|
return JSON.toJSONString(data);
|
|
}
|
|
|
|
/**
|
|
* 支持返回大写json
|
|
*
|
|
* @param data 需要转换实体
|
|
* @return string
|
|
*/
|
|
public static String toProJsonString(Object data) {
|
|
return JSONObject.toJSONString(data, new PascalNameFilter(), SerializerFeature.WriteMapNullValue);
|
|
}
|
|
|
|
public static JSONObject parseObject(String data) {
|
|
return JSON.parseObject(data);
|
|
}
|
|
|
|
public static <T> T parseObject(String data, Class<T> clazz) {
|
|
return JSON.parseObject(data, clazz);
|
|
}
|
|
|
|
public static JSONArray parseArray(String data) {
|
|
return JSON.parseArray(data);
|
|
}
|
|
|
|
public static <T> List<T> parseArray(String data, Class<T> clazz) {
|
|
return JSON.parseArray(data, clazz);
|
|
}
|
|
|
|
public static <T> List<T> copyArray(Object data, Class<T> clazz) {
|
|
if (data == null) {
|
|
return new ArrayList<>();
|
|
}
|
|
String json = toJsonString(data);
|
|
if (ObjectUtils.isEmpty(json)) {
|
|
return new ArrayList<>();
|
|
}
|
|
return parseArray(json, clazz);
|
|
}
|
|
|
|
|
|
/**
|
|
* fastJson反序列化Bean
|
|
*
|
|
* @param json json
|
|
* @param clazz 类型
|
|
* @return bean
|
|
*/
|
|
public static <T> T decodeBean(Object json, Class<T> clazz) {
|
|
return decodeBean(toJsonString(json), clazz);
|
|
}
|
|
|
|
/**
|
|
* fastJson反序列化Bean
|
|
*
|
|
* @param json json
|
|
* @param clazz 类型
|
|
* @return bean
|
|
*/
|
|
public static <T> T decodeBean(String json, Class<T> clazz) {
|
|
return parseObject(json, clazz);
|
|
}
|
|
|
|
/**
|
|
* fastJson反序列化List
|
|
*
|
|
* @param json json
|
|
* @param clazz 类型
|
|
* @return List<T>
|
|
*/
|
|
public static <T> List<T> decodeList(String json, Class<T> clazz) {
|
|
return decode(json, new TypeReference<List<T>>(clazz) {
|
|
});
|
|
}
|
|
|
|
|
|
/**
|
|
* fastJson反序列化
|
|
*
|
|
* @param json json
|
|
* @param typeReference 类型
|
|
* @return 反序列化后的值
|
|
*/
|
|
private static <T> T decode(String json, TypeReference<T> typeReference) {
|
|
try {
|
|
return JSON.parseObject(json, typeReference);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* 获取数组的第一个对象
|
|
*
|
|
* @param dataJson dataJson
|
|
* @return jsonObj
|
|
*/
|
|
public static JSONObject parseArrGetFirstJsonObj(String dataJson) {
|
|
try {
|
|
if (ObjectUtils.isEmpty(dataJson)) {
|
|
return null;
|
|
}
|
|
JSONArray dataJsonArr = JSONObject.parseArray(dataJson);
|
|
if (dataJsonArr.isEmpty()) {
|
|
return null;
|
|
}
|
|
return dataJsonArr.getJSONObject(0);
|
|
} catch (Exception e) {
|
|
log.error(e.getMessage());
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* 根据括号类型获取
|
|
*
|
|
* @param dataJson dataJson
|
|
* @return jsonObj
|
|
*/
|
|
public static JSONObject parseJsonObjByBracket(String dataJson) {
|
|
try {
|
|
if (ObjectUtils.isEmpty(dataJson)) {
|
|
return null;
|
|
}
|
|
dataJson = dataJson.trim();
|
|
String bracketType = dataJson.substring(0, 1); // 括号类型
|
|
if ("[".equals(bracketType)) {
|
|
return parseArrGetFirstJsonObj(dataJson);
|
|
}
|
|
return JSONObject.parseObject(dataJson);
|
|
} catch (Exception e) {
|
|
log.error(e.getMessage());
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
// List<MRHistory> test = parseArray("[{\"Ba_Borrow_Apply_Name\":\"杨木苗\",\"Out_Hosp_Time\":\"2013-08-0115:58:00\",\"BA_Borrow_isPrint\":false,\"Zynum\":\"1049499\",\"BA_Borrow_isPay\":false,\"In_Hosp_Time\":\"2012-08-1015:30:00\",\"Dx\":\"精神分裂症\",\"Ba_Borrow_Useto_Name\":\"律师\",\"BA_Borrow_OperDate\":\"2023-06-2015:55:28\",\"Ba_Borrow_Phone\":\"1\",\"Bano\":\"1049499\",\"Ba_Borrow_Getway\":0,\"Ba_Borrow_Address\":\"1\"}]", MRHistory.class);
|
|
}
|
|
}
|
|
|