是否可以使用 toString 方法将对象序列化为 JSON,而无需自定义序列化程序?

Héc*_*tor 3 java json jackson

我有这门课:

public class JsonUser {

    private final String id;
    private final String email;

    public JsonUser(String id, String email) {
        this.id = id;
        this.email = email;
    }

    @Override
    public String toString() {
        JsonObject json = new JsonObject();
        json.addProperty("id", user.id());
        json.addProperty("email", user.email());
        return json.toString();
    }

}
Run Code Online (Sandbox Code Playgroud)

如您所见,JsonUser::toString返回一个 JSON 字符串。我想知道是否有任何方法可以告诉杰克逊JsonUser通过调用进行序列化toString方法而不是通过字段/属性进行序列化。

是否可以在不使用@JsonSerialize自定义序列化器的情况下实现这一目标?

Bal*_*ldy 5

如果您toString()使用 Jackson 注释该方法,@JsonValue则将使用该方法进行序列化。您还可以注释 String 构造函数以@JsonCreator进行反序列化。