Java 如何使用Jackson将自定义方法的输出序列化为JSON?

Java 如何使用Jackson将自定义方法的输出序列化为JSON?,java,json,jackson,Java,Json,Jackson,我想序列化特定方法的输出(方法的名称不以get前缀开头) JSON示例 customMethod()的输出未序列化为JSON字段。如何实现customMethod()输出的序列化而不添加get前缀?在方法中使用JsonProperty注释 对于Jackson2: import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.JsonProcessingException; impor

我想序列化特定方法的输出(方法的名称不以
get
前缀开头)

JSON示例


customMethod()
的输出未序列化为JSON字段。如何实现
customMethod()
输出的序列化而不添加
get
前缀?

在方法中使用JsonProperty注释

对于Jackson2:

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class MyClass {

private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@JsonProperty("customMethod")
public String customMethod() {
    return "test";
}

public static void main(String[] args) {

    ObjectMapper objectMapper = new ObjectMapper();

    MyClass test = new MyClass();
    test.setName("myName");

    try {
        System.out.println(objectMapper.writeValueAsString(test));
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }

}
}
输出:

{“name”:“myName”,“customMethod”:“test”}


希望有帮助

这应该会有帮助@JsonProperty(“customMethod”)

这可能是一个解决方案吗

@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY)
public class POJOWithFields {
  private int value;
}

来源:

是否添加一个仅用于序列化的伪get自定义方法\请仔细阅读问题。这应该会有帮助@JsonProperty(“customeMethod”)是的,它是正确的注释。谢谢
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class MyClass {

private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@JsonProperty("customMethod")
public String customMethod() {
    return "test";
}

public static void main(String[] args) {

    ObjectMapper objectMapper = new ObjectMapper();

    MyClass test = new MyClass();
    test.setName("myName");

    try {
        System.out.println(objectMapper.writeValueAsString(test));
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }

}
}
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY)
public class POJOWithFields {
  private int value;
}