首页 > 解决方案 > 如何使用 Jackson @JsonFormat 注解格式化序列化字符串?

问题描述

我是使用 Jackson 将我的对象序列化为 XML 的 Java 新手。我需要通过将它们包装在 HTML 段落标签中来格式化我的字符串值。我尝试使用@JsonFormat注释但没有成功。我的伪(代码)如下:

package mypackage;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;

public class MyClass {
    // I want to find a pattern that will serialise  text  as <p>{string value of text}</p>
    @JsonFormat(shape = Shape.STRING, pattern = "<p>{text}</p>") // can I do something like this?
    String text;

    public MyClass(MyOtherClass otherClass) {
        this.text = otherClass.text;
    }
}

我找不到任何关于如何格式化pattern以实现我想要的文档。在这里使用@JsonFormat错误的方法吗?

标签: javajacksonxml-serializationjackson-dataformat-xml

解决方案


您可以创建 json getter 和 setter,然后使用您的自定义逻辑处理字段:

private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    @JsonGetter("text")
    public String getJsonText() {
        return text == null ? null : "<p>" + text + "</p>";
    }

    @JsonSetter("text")
    public void setJsonText(String text) {
        this.text = text == null ? null : StringUtils.substringBetween(text, "<p>", "</p>");
    }

推荐阅读