当 JsonProperty 属性不同时如何打印对象 json?
How to print the object json when JsonProperty is different of attribute?
如果我有class,例如:
import com.fasterxml.jackson.annotation.JsonProperty;
class Person {
@JsonProperty("alternativeName")
private String name;
}
我有一个 A 的实例 name = "test"
我想在日志中包含:
Object Person(alternativeName=test, ... [other JsonProperty..])
如何使用 JsonProperty 而不是属性来获取该对象?有什么办法可以得到吗?
它在日志中的显示方式取决于 toString()
方法。它通常包括属性的名称并且不处理 @JsonProperty
注释。您有两种方法可以做到这一点:
- 更改
toString()
实现,使其打印 alternativeName
而不是 name
。这样做的缺点是,如果您想将 alternativeName
更改为其他任何内容,您将需要调整两个 String
。
- 在您的日志语句中使用
ObjectMapper
writeValueAsString()
方法。这将考虑 @JsonProperty
但它会将 Person
记录为 JSON 而不是常规 POJO(如您在示例中所述)。
现在您需要做出妥协,select您认为最好的方法。
如果我有class,例如:
import com.fasterxml.jackson.annotation.JsonProperty;
class Person {
@JsonProperty("alternativeName")
private String name;
}
我有一个 A 的实例 name = "test"
我想在日志中包含:
Object Person(alternativeName=test, ... [other JsonProperty..])
如何使用 JsonProperty 而不是属性来获取该对象?有什么办法可以得到吗?
它在日志中的显示方式取决于 toString()
方法。它通常包括属性的名称并且不处理 @JsonProperty
注释。您有两种方法可以做到这一点:
- 更改
toString()
实现,使其打印alternativeName
而不是name
。这样做的缺点是,如果您想将alternativeName
更改为其他任何内容,您将需要调整两个String
。 - 在您的日志语句中使用
ObjectMapper
writeValueAsString()
方法。这将考虑@JsonProperty
但它会将Person
记录为 JSON 而不是常规 POJO(如您在示例中所述)。
现在您需要做出妥协,select您认为最好的方法。