From 778a7795105448979522fd0c1324c0c78f3d111b Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 26 Sep 2024 11:57:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A1=A5=E4=B8=8A=E7=BC=BA=E5=B0=91?= =?UTF-8?q?=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xymanager_common/util/JSONProcessor.java | 85 +++++++++++++++++++ .../shxy/xymanager_common/util/JSONUtil.java | 47 ++++++++++ 2 files changed, 132 insertions(+) create mode 100644 xymanager_common/src/main/java/com/shxy/xymanager_common/util/JSONProcessor.java create mode 100644 xymanager_common/src/main/java/com/shxy/xymanager_common/util/JSONUtil.java diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/JSONProcessor.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/JSONProcessor.java new file mode 100644 index 0000000..37c0b64 --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/JSONProcessor.java @@ -0,0 +1,85 @@ +package com.shxy.xymanager_common.util; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; + +import java.io.File; +import java.io.IOException; +import java.util.Map; + +public class JSONProcessor { + + + public Map fromJSON2Map(String json) throws JsonParseException, JsonMappingException, IOException { + ObjectMapper mapper = new ObjectMapper(); + @SuppressWarnings("unchecked") + Map productMap = mapper.readValue(json, Map.class); + return productMap; + } + + public Map fromJSON2Map(Object obj) throws JsonParseException, JsonMappingException, IOException { + ObjectMapper mapper = new ObjectMapper(); + @SuppressWarnings("unchecked") + Map productMap = mapper.convertValue(obj, Map.class); + return productMap; + } + + public String buildJSONFromJSONObject(Object obj) { + String jsonInString = null; + ObjectMapper mapper = new ObjectMapper(); + try { + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); + mapper.setSerializationInclusion(Include.NON_NULL); + jsonInString = mapper.writeValueAsString(obj); + } catch (Exception e) { +// LOG.error("JSON transform failed. ", e); + } + return jsonInString; + } + + public String buildJSONFromJSONObject(Object obj, boolean prettyPrinter) { + String jsonInString = null; + ObjectMapper mapper = new ObjectMapper(); + try { + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); + mapper.setSerializationInclusion(Include.NON_NULL); + if (prettyPrinter) { + jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj); + } else { + jsonInString = mapper.writeValueAsString(obj); + } + } catch (Exception e) { +// LOG.error("JSON transform failed. ", e); + } + return jsonInString; + } + + public T buildJSONObjectFromJSON(String json, Class clazz) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + try { + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + return mapper.readValue(json, clazz); + } catch (UnrecognizedPropertyException e) { + throw new Exception(e.getPropertyName(), e); + } + } + + public T buildJSONObjectFromJSON(File file, Class clazz) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + try { + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + return mapper.readValue(file, clazz); + } catch (UnrecognizedPropertyException e) { + throw new Exception(e.getPropertyName(), e); + } catch (Exception e) { + throw new Exception("JSON Object transform failed. ", e); + } + } +} diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/JSONUtil.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/JSONUtil.java new file mode 100644 index 0000000..be3de5f --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/JSONUtil.java @@ -0,0 +1,47 @@ +/** + * @author roger - Sep 9, 2016 + * @version 2.0 + * file name: JSONProcessor.java + * package name: com.roam2free.rest.util + */ + +package com.shxy.xymanager_common.util; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.SerializationFeature; + +import java.io.File; +import java.io.IOException; +import java.util.Map; + + +public class JSONUtil { + + private static JSONProcessor jSONProcessor = new JSONProcessor(); + + public static String object2Json(Object obj) { + return jSONProcessor.buildJSONFromJSONObject(obj); + } + + public static String object2Json(Object obj, boolean prettyPrinter) { + return jSONProcessor.buildJSONFromJSONObject(obj, prettyPrinter); + } + + public static T json2Object(String json, Class clazz) throws Exception { + return jSONProcessor.buildJSONObjectFromJSON(json, clazz); + } + + public static T file2Object(File file, Class clazz) throws Exception { + return jSONProcessor.buildJSONObjectFromJSON(file, clazz); + } + + public static Map object2Map(Object obj) { + try { + return jSONProcessor.fromJSON2Map(obj); + } catch (IOException e) { + return null; + } + } + +}