现在的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); }
最终输出结果: