Java 类转 Json 时属性名使用下划线

Java 类转 Json 时属性名使用下划线

很多时候和其它系统对接的时候,不太喜欢用驼峰的方式,毕竟如果是给前端的api,写个驼峰总感觉有点怪异,总喜欢将属性使用下划线。也就是一个bookName,给前端的时候是:book_name,当然如果是后台系统,还是使用驼峰啊。

Java 统一 json 为下划线

在 Java 中有两种方式可以实现这种方式,一种是全局的,一种是局部。

全局修改属性的json名为下划线格式

如果需要全局的修改,那么只需要在类上面使用@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package me.chenzhijun.enumjson;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Instance {
Object state;
private String bookName;

public Instance(Object state){
this.state=state;
this.bookName="《json转换》";
}

public Instance() {
}

public Object getState() {
return state;
}

public void setState(Object state) {
this.state = state;
}

public String getBookName() {
return bookName;
}

public void setBookName(String bookName) {
this.bookName = bookName;
}
}

转换后的json为:

1
2
3
4
{
"state": "Success",
"book_name": "《json转换》"
}

局部修改属性的json名为下划线格式

局部的方式就是使用@JsonProperty(value = "book_name")这个作用在属性上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package me.chenzhijun.enumjson;

import com.fasterxml.jackson.annotation.JsonProperty;

public class Instance {
String state;

@JsonProperty(value = "book_name")
private String bookName;

public Instance(String state) {
this.state = state;
this.bookName = "《json转换》";
}

public Instance() {
}

public Object getState() {
return state;
}

public void setState(String state) {
this.state = state;
}

public String getBookName() {
return bookName;
}

public void setBookName(String bookName) {
this.bookName = bookName;
}
}

测试类为:

1
2
3
4
5
@Test
public void jsonTest() throws JsonProcessingException {
Instance instance = new Instance("success");
System.out.println(objectMapper.writeValueAsString(instance));
}

本文标题:Java 类转 Json 时属性名使用下划线

文章作者:陈志军

发布时间:2019-07-06 00:26:28

原始链接:http://chenzhijun.me/2019/07/06/java-json-generate-with-underline/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!