gpt4 book ai didi

java - 根据 Java 环境变量中的值创建使用 @JsonIgnore 的自定义注解

转载 作者:行者123 更新时间:2023-11-30 10:11:45 25 4
gpt4 key购买 nike

我需要创建一个新注释,用于在环境变量 var == false 时忽略输出 JSON 文件中的字段。我尝试使用 JsonAnnotationIntrospector,但无法获得预期的输出。

public class Vehicle {
String vehicle_name;
String vehicle_model;
//getters and setters
@MyAnnotation
public String getVehicle_model() {
return vehicle_model;
}
}

这里我需要在环境变量var == false时移除vehicle_model属性。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@JsonIgnore
public @interface MyAnnotation {
}

这是我自定义注释的声明。有人能告诉我应该如何编写 Introspector 部分以获得我需要的功能吗?

提前致谢。

编辑:我对 JacksonAnnotationIntrospector 的尝试

public class MyAnnotationIntrospector extends JacksonAnnotationIntrospector {
@Override
public boolean hasIgnoreMarker(AnnotatedMember annotatedMember) {
//need this part
}
}

ObjectMapper的实现是

 ObjectMapper mapper = new ObjectMapper();
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(this);

最佳答案

像这样

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
public @interface MyAnnotation {
}

public class Vehicle {

private String vehicle_name;

@MyAnnotation
private String vehicle_model;
//getters and setters

public static void main(String[] args) throws JsonProcessingException {

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
objectMapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector() {

@Override
public boolean hasIgnoreMarker(AnnotatedMember m) {

if (!System.getenv("var").equals("true")) {
return false;
}
if(_findAnnotation(m, MyAnnotation.class) != null){
return true;
} else {
return false;
}
});

Vehicle vehicle = new Vehicle();
vehicle.setVehicle_model("vehicle_model_value");
vehicle.setVehicle_name("vehicle_name_value");

String value = objectMapper.writeValueAsString(vehicle);
System.out.println(value);
}
}

关于java - 根据 Java 环境变量中的值创建使用 @JsonIgnore 的自定义注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52292845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com