FastJson中@JSONField注解使用

r囧r小猫 2022-04-10 10:45 290阅读 0赞

最近在一个项目中,在组装信息给对方发送json字符串的时候,对方要字符key总是大写开头的,而用标准的

  1. body = JSONObject.toJSONString(EnterpriseInfoDTO);
  2. body = JSON.toJSONString(EnterpriseInfoDTO);

输出的时候,就算我们的属性定义是大写开头,但是经过FastJson转换之后,它也会是小写开头。

所以我们需要指定转换为json的时候,对应的key的值为大写。

需要使用@JSONField注解。

  1. @JSONField(name = "AuthTime")
  2. public String getAuthTime() {
  3. return AuthTime;
  4. }

一、作用Field (相当于get set的总和)

@JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。

二、作用在setter和getter方法上

顾名思义,当作用在setter方法上时,就相当于根据 name 到 json中寻找对应的值,并调用该setter对象赋值。

当作用在getter上时,在bean转换为json时,其key值为name定义的值。实例如下:

  1. import com.alibaba.fastjson.JSONObject;
  2. import com.alibaba.fastjson.annotation.JSONField;
  3. public class JSONFieldTest {
  4. @JSONField(name = "jsonName")
  5. private String name;
  6. private String age;
  7. private String email;
  8. public String getName() {
  9. return name;
  10. }
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  14. @JSONField(name = "jsonAge")
  15. public String getAge() {
  16. return age;
  17. }
  18. public void setAge(String age) {
  19. this.age = age;
  20. }
  21. public String getEmail() {
  22. return email;
  23. }
  24. @JSONField(name = "jsonEmail")
  25. public void setEmail(String email) {
  26. this.email = email;
  27. }
  28. @Override
  29. public String toString() {
  30. return "JSONFieldTest [name=" + name + ", age=" + age + ", email="
  31. + email + "]";
  32. }
  33. public static void main(String[] args) {
  34. JSONFieldTest jsonFieldTest = new JSONFieldTest();
  35. jsonFieldTest.setAge("21岁");
  36. jsonFieldTest.setEmail("111@11.com");
  37. jsonFieldTest.setName("hhh");
  38. System.out.println(JSONObject.toJSON(jsonFieldTest));
  39. //输出了:{"jsonName":"hhh","jsonAge":"21岁","email":"111@11.com"}
  40. }
  41. }

发表评论

表情:
评论列表 (有 0 条评论,290人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Fastjson @JsonField注解使用

    【引言】 在开发中,不论是前后端联调,还是与第三方对接,有时候难免会遇到对方定义的json数据中的key值与自己后端定义的实体字段不一致的情况,也有时候会遇到前端传的日期数据