如何使用 Jackson 将自定义方法的输出序列化为 JSON?
How to serialize output from custom method to JSON using 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 字段。如何在不添加 get
prefix 的情况下实现 customMethod()
输出的序列化?
在您的方法中使用 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"}
希望对您有所帮助!
这应该有所帮助。 @JsonProperty("customMethod")
也许这是一个解决方案?
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY)
public class POJOWithFields {
private int value;
}
我想序列化特定方法的输出(方法名称不以 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 字段。如何在不添加 get
prefix 的情况下实现 customMethod()
输出的序列化?
在您的方法中使用 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"}
希望对您有所帮助!
这应该有所帮助。 @JsonProperty("customMethod")
也许这是一个解决方案?
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY)
public class POJOWithFields {
private int value;
}