|
@@ -1,5 +1,13 @@
|
|
|
package com.yonge.toolset.utils.json;
|
|
|
|
|
|
+import java.lang.reflect.Type;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.nio.charset.CharsetDecoder;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Map.Entry;
|
|
|
+
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.parser.Feature;
|
|
@@ -10,15 +18,6 @@ import com.alibaba.fastjson.serializer.SerializeWriter;
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.alibaba.fastjson.serializer.ValueFilter;
|
|
|
import com.alibaba.fastjson.util.TypeUtils;
|
|
|
-import com.google.common.collect.Lists;
|
|
|
-
|
|
|
-import java.lang.reflect.Type;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.nio.charset.CharsetDecoder;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Map.Entry;
|
|
|
|
|
|
/**
|
|
|
* 注意点: 如果存在对象间循环引用问题,解决办法: 将get方法的方法名非标准的名称,
|
|
@@ -35,7 +34,7 @@ public class JsonUtil {
|
|
|
|
|
|
/**
|
|
|
* 将json字符串反序列化为指定对象
|
|
|
- *
|
|
|
+ *
|
|
|
* @param <T>
|
|
|
* @param text
|
|
|
* json串
|
|
@@ -51,7 +50,7 @@ public class JsonUtil {
|
|
|
|
|
|
/**
|
|
|
* 将集合型json串转换成集合对象
|
|
|
- *
|
|
|
+ *
|
|
|
* @param <T>
|
|
|
* @param text
|
|
|
* json串
|
|
@@ -65,7 +64,7 @@ public class JsonUtil {
|
|
|
|
|
|
/**
|
|
|
* 将字节数组转换成指定对象
|
|
|
- *
|
|
|
+ *
|
|
|
* @param <T>
|
|
|
* @param input
|
|
|
* 需要转换的内容
|
|
@@ -83,7 +82,7 @@ public class JsonUtil {
|
|
|
|
|
|
/**
|
|
|
* 忽略具体对象中的某些属性,将其他属性转换成json字符串
|
|
|
- *
|
|
|
+ *
|
|
|
* @param object
|
|
|
* 具体对象
|
|
|
* @param ingnoreProperties
|
|
@@ -106,7 +105,7 @@ public class JsonUtil {
|
|
|
|
|
|
/**
|
|
|
* 允许具体对象中的某些属性对应的值转换成json字符串
|
|
|
- *
|
|
|
+ *
|
|
|
* @param object
|
|
|
* 具体对象
|
|
|
* @param allowProperties
|
|
@@ -128,22 +127,9 @@ public class JsonUtil {
|
|
|
}
|
|
|
|
|
|
private static String toJsonString(Object obj, ValueFilter filter) {
|
|
|
- // SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.QuoteFieldNames, SerializerFeature.SkipTransientField, SerializerFeature.WriteEnumUsingToString, SerializerFeature.SortField
|
|
|
-
|
|
|
- SerializeWriter out = new SerializeWriter();
|
|
|
+ SerializeWriter out = new SerializeWriter(SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.QuoteFieldNames,
|
|
|
+ SerializerFeature.SkipTransientField, SerializerFeature.WriteEnumUsingToString, SerializerFeature.SortField);
|
|
|
JSONSerializer serializer = new JSONSerializer(out);
|
|
|
-
|
|
|
- ArrayList<SerializerFeature> serializerFeatures = Lists.newArrayList(
|
|
|
- SerializerFeature.DisableCircularReferenceDetect,
|
|
|
- SerializerFeature.WriteNullStringAsEmpty,
|
|
|
- SerializerFeature.WriteMapNullValue,
|
|
|
- SerializerFeature.QuoteFieldNames,
|
|
|
- SerializerFeature.WriteNullNumberAsZero
|
|
|
- );
|
|
|
- for (SerializerFeature feature : serializerFeatures) {
|
|
|
- serializer.config(feature, true);
|
|
|
- }
|
|
|
-
|
|
|
serializer.config(SerializerFeature.WriteEnumUsingToString, false);
|
|
|
serializer.getValueFilters().add(filter);
|
|
|
serializer.write(obj);
|
|
@@ -152,7 +138,7 @@ public class JsonUtil {
|
|
|
|
|
|
/**
|
|
|
* 将传入的List<JSONObject>改为List<Object>
|
|
|
- *
|
|
|
+ *
|
|
|
* @param jsonList
|
|
|
* 传入的List<JSONObject>
|
|
|
* @param clazz
|
|
@@ -163,7 +149,7 @@ public class JsonUtil {
|
|
|
List<T> objList = new ArrayList<T>();
|
|
|
if (jsonList != null && jsonList.size() > 0) {
|
|
|
for (int i = 0; i < jsonList.size(); i++) {
|
|
|
- T val = TypeUtils.castToJavaBean(jsonList.get(i), clazz, null);
|
|
|
+ T val = TypeUtils.castToJavaBean(jsonList.get(i), clazz);
|
|
|
objList.add(val);
|
|
|
}
|
|
|
}
|
|
@@ -184,19 +170,11 @@ public class JsonUtil {
|
|
|
|
|
|
public static String toJSONString(Object object, SerializeConfig config, ValueFilter filter, SerializerFeature... features) {
|
|
|
|
|
|
- // SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteMapNullValue, SerializerFeature.QuoteFieldNames, SerializerFeature.WriteNullNumberAsZero
|
|
|
- SerializeWriter out = new SerializeWriter();
|
|
|
+ SerializeWriter out = new SerializeWriter(SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteNullStringAsEmpty,
|
|
|
+ SerializerFeature.WriteMapNullValue, SerializerFeature.QuoteFieldNames, SerializerFeature.WriteNullNumberAsZero);
|
|
|
|
|
|
- ArrayList<SerializerFeature> serializerFeatures = Lists.newArrayList(
|
|
|
- SerializerFeature.DisableCircularReferenceDetect,
|
|
|
- SerializerFeature.WriteNullStringAsEmpty,
|
|
|
- SerializerFeature.WriteMapNullValue,
|
|
|
- SerializerFeature.QuoteFieldNames,
|
|
|
- SerializerFeature.WriteNullNumberAsZero
|
|
|
- );
|
|
|
- serializerFeatures.addAll(Lists.newArrayList(features));
|
|
|
JSONSerializer serializer = new JSONSerializer(out, config);
|
|
|
- for (SerializerFeature feature : serializerFeatures) {
|
|
|
+ for (SerializerFeature feature : features) {
|
|
|
serializer.config(feature, true);
|
|
|
}
|
|
|
if (filter == null) {
|
|
@@ -217,7 +195,7 @@ public class JsonUtil {
|
|
|
|
|
|
/**
|
|
|
* 可根据配置参数对目标对象进行转换成json字符串
|
|
|
- *
|
|
|
+ *
|
|
|
* @param obj
|
|
|
* 目标对象
|
|
|
* @param configs
|