使用jacksonjson实现实体类的小写下划线分割输出

jackson java 文章 2020-09-10 10:13 0 90 全屏看文

现在的json接口基本上都是小写的驼峰输出。但是我们定义实体类可能是大写下划线、或者是驼峰形式定义属性。


比如我们的实体类是:

public class EINVOICE {

	private String ERR_MSG;//错误消息
	private String dataObject;//错误消息

	
	public String getDataObject() {
		return dataObject;
	}

	public void setDataObject(String dataObject) {
		this.dataObject = dataObject;
	}

	public String getERR_MSG() {
		return ERR_MSG;
	}

	public void setERR_MSG(String eRR_MSG) {
		ERR_MSG = eRR_MSG;
	}
}


我们需要输出时变成:

{"data_object":null,"err_msg":null}


此时我们可以用到com.fasterxml.jackson的类库。

我们需要用到com.fasterxml.jackson.core » jackson-databind下的ObjectMapper

他的maven依赖XML如:

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.2</version>
</dependency>


然后我们就可以编写我们的测试类:

public static void main(String[] args) throws JsonProcessingException {
	EINVOICE dtl = new EINVOICE();
	ObjectMapper mapper = new ObjectMapper();
	mapper.setSerializationInclusion(Include.ALWAYS).setPropertyNamingStrategy(PropertyNamingStrategy.LowerCaseStrategy.SNAKE_CASE);
	// 设置输入时忽略在JSON字符串中存在但Java对象实际没有的属性
	mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
	String res = mapper.writeValueAsString(dtl);
	System.out.println(res);
}


最终输出结果:

image.png

-EOF-