@JsonProperty 踩坑

@JsonProperty 在fastjson 和 hutooljson 中是不会生效的。

在 fastjson 中,对应的注解是 @JSONField。如果你正在使用 fastjson 进行 JSON 的序列化和反序列化,并且想要改变字段的 JSON 属性名,你应该使用 @JSONField 注解,而不是 @JsonProperty。

public class User {
    @JSONField(name = "email")
    private String userEmail;

    // getter 和 setter 方法
}

hutooljson  是没有指定的。

Jackson 的方法基本都会抛出异常,自己注意处理异常。

@JsonProperty 是 Jackson 库中的一个注解,它用于在 Java 对象和 JSON 之间进行序列化(将 Java 对象转换为 JSON)和反序列化(将 JSON 转换为 Java 对象)时指定字段的 JSON 属性名。当你使用 Jackson 进行 JSON 处理时,这个注解就会生效。

下面是如何使用 @JsonProperty 注解的一些关键点:

  1. 添加依赖:确保你的项目中包含了 Jackson 库的依赖。如果你使用 Maven,可以在 pom.xml 文件中添加如下依赖:
xml<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version> <!-- 请检查并使用最新版本 -->
</dependency>
  1. 使用 @JsonProperty:在你的 Java 类中,为需要特殊处理的字段添加 @JsonProperty 注解。例如,你可能有一个 Java 字段名为 userEmail,但你想在 JSON 中将其表示为 email
javapublic class User {
@JsonProperty("email")
private String userEmail;

// getter 和 setter 方法
public String getUserEmail() {
return userEmail;
}

public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
}
  1. 序列化:当你使用 Jackson 的 ObjectMapper 类将 User 对象转换为 JSON 字符串时,@JsonProperty 注解就会生效。例如:
javaObjectMapper mapper = new ObjectMapper();
User user = new User();
user.setUserEmail("example@example.com");
String json = mapper.writeValueAsString(user);
System.out.println(json); // 输出:{"email":"example@example.com"}
  1. 反序列化:同样,当你使用 ObjectMapper 类将 JSON 字符串转换为 User 对象时,@JsonProperty 注解也会帮助 Jackson 正确地将 JSON 属性映射到 Java 字段。

总之,只要你的项目中包含了 Jackson 库的依赖,并且你正确地使用了 @JsonProperty 注解,那么它就应该能够生效。

jackson 中转 JavaList

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.List;

public class JsonToListExample {

    public static void main(String[] args) {
        ObjectMapper objectMapper = new ObjectMapper();
        String json = "[{\"id\":1,\"name\":\"Item1\"},{\"id\":2,\"name\":\"Item2\"}]";

        try {
            TypeReference<List<Item>> typeRef = new TypeReference<List<Item>>() {};
            List<Item> items = objectMapper.readValue(json, typeRef);
            items.forEach(item -> System.out.println(item.getName()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class Item {
    private int id;
    private String name;

    // Getters and Setters...
    
    public String getName() {
        return name;
    }
}

相关推荐

  1. @JsonProperty

    2024-07-19 13:10:05       21 阅读
  2. mySQL记录

    2024-07-19 13:10:05       60 阅读
  3. Pinia 记录

    2024-07-19 13:10:05       56 阅读
  4. FollowYourPose 安装

    2024-07-19 13:10:05       43 阅读
  5. golang记录

    2024-07-19 13:10:05       36 阅读
  6. Keepalived

    2024-07-19 13:10:05       49 阅读
  7. uniapp细节

    2024-07-19 13:10:05       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 13:10:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 13:10:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 13:10:05       58 阅读
  4. Python语言-面向对象

    2024-07-19 13:10:05       69 阅读

热门阅读

  1. MMI(Multi Media Interface,多媒体交互系统)

    2024-07-19 13:10:05       21 阅读
  2. 逗号表达式还原

    2024-07-19 13:10:05       19 阅读
  3. 汇编 -- ARM汇编之 .inst指令与udf指令使用

    2024-07-19 13:10:05       20 阅读
  4. 新能源汽车缩写含义

    2024-07-19 13:10:05       18 阅读
  5. 【Gitlab】记一次升级 Gitlab 后 API 失效的问题

    2024-07-19 13:10:05       23 阅读
  6. React一基础

    2024-07-19 13:10:05       21 阅读
  7. Spark SQL----CLUSTER BY子句

    2024-07-19 13:10:05       18 阅读
  8. Solana的账户模型

    2024-07-19 13:10:05       23 阅读