common.framework.util.JsonUtil Maven / Gradle / Ivy
package common.framework.util;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.*;
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.List;
/**
* Description: Json工具包,包装hutool工具
* 包装JSON工具包,后期方便替换
*
* @author linan
* @date 2020-10-21
*/
public class JsonUtil {
//------------------------------toString start--------------------------------------
/**
* 对象转Json字符串
* @param object 对象
* @return String 字符串
*/
public static String toJsonStr(Object object){
if (null == object) {
return null;
}else if (object instanceof String) {
//避免二次转义
return (String) object;
}else if (object instanceof Collection){
JSONArray jsonArray = JSONUtil.parseArray(object);
String result = JSONUtil.toJsonStr(jsonArray);
return result;
}else {
JSONObject jsonObject = JSONUtil.parseObj(object);
String result = JSONUtil.toJsonStr(jsonObject);
return result;
}
}
/**
* 对象转Json字符串
* @param object 对象
* @param ignoreNullValue 是否忽略空值
* @return String 字符串
*/
public static String toJsonStr(Object object,boolean ignoreNullValue){
if (null == object) {
return null;
}else if (object instanceof String) {
//避免二次转义
return (String) object;
}else if (object instanceof Collection){
JSONArray jsonArray = JSONUtil.parseArray(object, ignoreNullValue);
String result = JSONUtil.toJsonStr(jsonArray);
return result;
}else {
JSONObject jsonObject = JSONUtil.parseObj(object,ignoreNullValue);
String result = JSONUtil.toJsonStr(jsonObject);
return result;
}
}
/**
* 对象转Json字符串 ,对Json串进行格式化,缩进4个单位
* @param object 对象
* @return String 字符串
*/
public static String toJsonPrettyStr(Object object){
if (null == object) {
return null;
}
if (object instanceof String) {
//避免二次转义
return (String) object;
}
JSON json = JSONUtil.parse(object);
String result = JSONUtil.toJsonPrettyStr(json);
return result;
}
//------------------------------toString end--------------------------------------
//------------------------------toBean start--------------------------------------
/**
* JSON字符串转为实体类对象,转换异常将被抛出
* @param json Json字符串
* @param beanClass 实体类对象
* @param Bean类型
* @return 实体类对象
*/
public static T toBean(String json,Class beanClass){
JSONObject jsonObject = JSONUtil.parseObj(json);
return JSONUtil.toBean(jsonObject,beanClass);
}
/**
* JSON字符串转为实体类对象,转换异常将被抛出
* @param json Json字符串
* @param beanType 实体类对象类型
* @param ignoreError 是否忽略错误
* @param Bean类型
* @return 实体类对象
*/
public static T toBean(String json, Type beanType, boolean ignoreError ){
JSONObject jsonObject = JSONUtil.parseObj(json);
return JSONUtil.toBean(jsonObject,beanType,ignoreError);
}
/**
* 将JSON字符串转换为Bean的List,默认为ArrayList
* @param json Json字符串
* @param elementType List中元素类型
* @param Bean类型
* @return ArrayList
*/
public static List toList(String json, Class elementType){
JSONArray jsonArray = JSONUtil.parseArray(json);
return JSONUtil.toList(jsonArray,elementType);
}
//------------------------------toBean end--------------------------------------
//------------------------------toOther start--------------------------------------
/**
* Json字符串转XML格式字符串
* @param json Json字符串
* @return String XML格式字符串
*/
public static String toXml(String json){
JSON jsonParam = JSONUtil.parse(json);
String result = XML.toXml(jsonParam);
return result;
}
/**
* XML格式字符串转Json字符串
* @param xml XML格式字符串
* @return string Json字符串
*/
public static String xmlToJson(String xml){
JSONObject jsonObject = JSONUtil.parseFromXml(xml);
return JSONUtil.toJsonStr(jsonObject);
}
//------------------------------toOther end--------------------------------------
/**
* 通过表达式获取JSON中嵌套的对象
*
* - .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值
* - []表达式,可以获取集合等对象中对应index的值
*
*
* 表达式栗子:
* map中有resultWrapper,以及一个array对象
*
*
* resultWrapper
* resultWrapper.msg
* array[1]
*
* person.friends[5].name
*
*
* @param json {@link JSON}
* @param expression 表达式
* @return 对象
* @see JSON#getByPath(String)
*/
public static Object getByPath(String json, String expression) {
JSON jsonObject = JSONUtil.parse(json);
return (null == json || StrUtil.isBlank(expression)) ? null : jsonObject.getByPath(expression);
}
/**
* 设置表达式指定位置(或filed对应)的值
* 若表达式指向一个JSONArray则设置其坐标对应位置的值,若指向JSONObject则put对应key的值
* 注意:如果为JSONArray,则设置值得下标不能大于已有JSONArray的长度
*
* - .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值
* - []表达式,可以获取集合等对象中对应index的值
*
*
* 表达式栗子:
*
*
* persion
* persion.name
* persons[3]
* person.friends[5].name
*
*
* @param json JSON,可以为JSONObject或JSONArray
* @param expression 表达式
* @param value 值
*/
public static String putByPath(String json, String expression, Object value) {
JSON jsonObject = JSONUtil.parse(json);
jsonObject.putByPath(expression, value);
return JSONUtil.toJsonStr(jsonObject);
}
/**
* 对所有双引号做转义处理(使用双反斜杠做转义)
* 为了能在HTML中较好的显示,会将</转义为<\/
* JSON字符串中不能包含控制字符和未经转义的引号和反斜杠
*
* @param string 字符串
* @return 适合在JSON中显示的字符串
*/
public static String quote(String string) {
return JSONUtil.quote(string, true);
}
/**
* 格式化JSON字符串,此方法并不严格检查JSON的格式正确与否
*
* @param jsonStr JSON字符串
* @return 格式化后的字符串
*/
public static String formatJsonStr(String jsonStr) {
return JSONUtil.formatJsonStr(jsonStr);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy