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

时间:2015-05-05 08:08:02

标签: java json jackson

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

class MyClass {
    // private fields with getters & setters

    public String customMethod() {
        return "some specific output";
    }
}

JSON

的示例
{
    "fields-from-getter-methods": "values",
    "customMethod": "customMethod"
}

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

3 个答案:

答案 0 :(得分:4)

在方法中使用JsonProperty注释。

杰克逊2:

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"}

希望它有所帮助!

答案 1 :(得分:1)

这应该有所帮助。 @JsonProperty(" customMethod")

答案 2 :(得分:1)

也许这可能是一个解决方案?

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

来源:{{3}}