com.alibaba.fastjson转换json时默认将属性第一个字母转小写

问题描述

将实体类对象转为json字符串的时候,会将属性名首字母改为小写

例如此出User队形有两个属性,USER_NAME和USER_AGE,首字母均为大写

image-20230509174435159

将实体类对象转为JSON后首字母全都转换为了小写

image-20230509174520330

解决方法

这是因为阿里巴巴的fastjson框架默认使用了JavaBean规范中的命名约定,将属性名首字母小写,以符合ava编码规
范。因此,当使用fastjson的SONObject.toJSONString方法将一个实体类对象转换为SON字符串时,实体类的属性名
会被自动转换成首字母小写的形式。如果需要在SON字符串中保留属性名的原始命名,可以使用fastjso提供的注解
@SONField来指定属性名

image-20230509174956741

这样转换的属性名称就正常了

image-20230509175032285

相关代码

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
35
36
37
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;


public class User {
@JSONField(name = "USER_NAME")
private String USER_NAME;
@JSONField(name = "USER_AGE")
private Integer USER_AGE;

public User() {
}


public String getUSER_NAME() {
return USER_NAME;
}

public void setUSER_NAME(String USER_NAME) {
this.USER_NAME = USER_NAME;
}

public Integer getUSER_AGE() {
return USER_AGE;
}

public void setUSER_AGE(Integer USER_AGE) {
this.USER_AGE = USER_AGE;
}

public static void main(String[] args) {
User user = new User();
user.setUSER_NAME("张三");
user.setUSER_AGE(18);
System.out.println(JSONObject.toJSONString(user));
}
}