Jackson 工具类

使用

在 pom 中加入依赖
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.2</version>
</dependency>

如果是 springBoot 项目不用加入依赖 因为 spring-boot -starter-web 默认导入了

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
常用注解

@JsonIgnore
忽略属性

@JsonProperty
当Json的属性值和Java的属性值不一样时,会映射失败,用这个注解指定映射关系,在属性上用这个注解,则序列化和反序列化都会用这个值。如果序列化和反序列化的属性不一致,可以在get方法或者set方法上用这个注解,set方法影响反序列化,get方法影响序列化。

@JsonFormat
日期格式化

@JsonIgnoreProperties(ignoreUnknown = true)
如果json字符串中的属性个数小于java对象中的属性个数,可以顺利转换,java中多的那个属性为null

如果json字符串中出现java对象中没有的属性,则在将json转换为java对象时会报错:Unrecognized field, not marked as ignorable

序列化和反序列化工具类:
@Slf4j
public class JsonUtil{
	private static ObjectMapper objectMapper = new ObjectMapper();
	
	static {
	        //忽略 在json字符串中存在,但是在java对象中不存在对应属性的情况。防止错误
	        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
	    }
		
	// 1. 序列化
	/** 将对象转为 json*/
	public static <T> STring obj2String(T obj) {
		if(obj == null) {
			return null;
		}
		try{
			return obj instanceof String ? (String) obj : ObjectMapper.writeValueAsString(obj);
		}catch(Exception e) {
			log.warn("parse Object to String error", e);
			return null;
		}
	}

	/** 将对象转为 json 并格式化输出 */
	public static <T> String obj2StringPretty(T obj){
	    if(obj == null){
	        return null;
	    }
	    try {
	        return obj instanceof String ? (String)obj :  objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
	    } catch (Exception e) {
	        log.warn("Parse Object to String error",e);
	        return null;
	    }
	}
	
	// 2. 反序列化
	public static <T> T string2Obj(String str, Class<T> clazz){
	    if(StringUtils.isEmpty(str) || clazz == null){
	        return null;
	    }
	
	    try {
	        return clazz.equals(String.class)? (T)str : objectMapper.readValue(str, clazz);
	    } catch (Exception e) {
	        log.warn("Parse String to Object error",e);
	        return null;
	    }
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值