diff --git a/pom.xml b/pom.xml index 09982cda..18f4e423 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.alibaba fastjson - 1.1.42 + 1.2.55 com.alibaba diff --git a/src/main/java/com/jsh/erp/utils/ExtJsonUtils.java b/src/main/java/com/jsh/erp/utils/ExtJsonUtils.java index a1c67a57..0b61b5fe 100644 --- a/src/main/java/com/jsh/erp/utils/ExtJsonUtils.java +++ b/src/main/java/com/jsh/erp/utils/ExtJsonUtils.java @@ -138,58 +138,4 @@ public class ExtJsonUtils { public interface ExtExtractor { String getExt(Object bean); } - - private static class MetaInfo { - private final static ParserConfig INSTANCE = ParserConfig.getGlobalInstance(); - - private final Object object; - private final Map map; - private final JSONObject ext = new JSONObject(); - - private MetaInfo(Object object) { - this.object = object; - this.map = INSTANCE.getFieldDeserializers(object.getClass()); - } - - void gather(String key, Object value) { - if (!map.containsKey(key)) { - ext.put(key, value); - } - } - - public void update(ExtExtractor extractor) { - JSONObject old = JSON.parseObject(extractor.getExt(object)); - if (old == null) { - old = new JSONObject(); - } - old.putAll(ext); - map.get(EXT_NAME).setValue(object, old.toJSONString()); - } - - static boolean hasExt(Class clazz) { - return INSTANCE.getFieldDeserializers(clazz).containsKey(EXT_NAME); - } - } - - public static T parseObject(String text, final Class clazz, ExtExtractor extractor) { - final Map map = new HashMap<>(); - - T object = JSON.parseObject(text, clazz, new ExtraProcessor() { - @Override - public void processExtra(Object object, String key, Object value) { - if (!map.containsKey(object) && MetaInfo.hasExt(object.getClass())) { - map.put(object, new MetaInfo(object)); - } - if (map.containsKey(object)) { - map.get(object).gather(key, value); - } - } - }); - - for (Map.Entry entry : map.entrySet()) { - entry.getValue().update(extractor); - } - - return object; - } }