package com.genersoft.iot.vmp.utils; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Iterator; import java.util.Map; import java.util.Objects; /** * @author gaofuwang * @version 1.0 * @date 2022/3/11 10:17 */ public class UJson { private static Logger logger = LoggerFactory.getLogger(UJson.class); public static final ObjectMapper JSON_MAPPER = new ObjectMapper(); static { JSON_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); } private ObjectNode node; public UJson(){ this.node = JSON_MAPPER.createObjectNode(); } public UJson(String json){ if(StringUtils.isBlank(json)){ this.node = JSON_MAPPER.createObjectNode(); }else{ try { this.node = JSON_MAPPER.readValue(json, ObjectNode.class); }catch (Exception e){ logger.error(e.getMessage(), e); this.node = JSON_MAPPER.createObjectNode(); } } } public UJson(ObjectNode node){ this.node = node; } public String asText(String key){ JsonNode jsonNode = node.get(key); if(Objects.isNull(jsonNode)){ return ""; } return jsonNode.asText(); } public String asText(String key, String defaultVal){ JsonNode jsonNode = node.get(key); if(Objects.isNull(jsonNode)){ return ""; } return jsonNode.asText(defaultVal); } public UJson put(String key, String value){ this.node.put(key, value); return this; } public UJson put(String key, Integer value){ this.node.put(key, value); return this; } public static UJson json(){ return new UJson(); } public static UJson json(String json){ return new UJson(json); } public static T readJson(String json, Class clazz){ if(StringUtils.isBlank(json)){ return null; } try { return JSON_MAPPER.readValue(json, clazz); }catch (Exception e){ logger.error(e.getMessage(), e); return null; } } public static String writeJson(Object object) { try{ return JSON_MAPPER.writeValueAsString(object); }catch (Exception e){ logger.error(e.getMessage(), e); return ""; } } @Override public String toString() { return node.toString(); } public int asInt(String key, int defValue) { JsonNode jsonNode = this.node.get(key); if(Objects.isNull(jsonNode)){ return defValue; } return jsonNode.asInt(defValue); } public UJson getSon(String key) { JsonNode sonNode = this.node.get(key); if(Objects.isNull(sonNode)){ return new UJson(); } return new UJson((ObjectNode) sonNode); } public UJson set(String key, ObjectNode sonNode) { this.node.set(key, sonNode); return this; } public UJson set(String key, UJson sonNode) { this.node.set(key, sonNode.node); return this; } public Iterator> fields() { return this.node.fields(); } public ObjectNode getNode() { return this.node; } public UJson setAll(UJson json) { this.node.setAll(json.node); return this; } }