【问题标题】:How to use Jackson @JsonFormat annotation to format a string on serialisation?如何使用 Jackson @JsonFormat 注解格式化序列化字符串?
【发布时间】:2020-09-28 12:12:25
【问题描述】:

我是一名 Java 新手,使用 Jackson 将我的对象序列化为 XML。我需要通过将它们包装在 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 是错误的方法吗?

【问题讨论】:

    标签: java jackson xml-serialization jackson-dataformat-xml


    【解决方案1】:

    您可以创建 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>");
        }
    

    【讨论】:

    • 谢谢!非常好。那么,单独使用注释就不可能做到这一点吗?
    • 不知道怎么用注解实现。
    猜你喜欢
    • 2015-03-23
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2013-03-17
    • 2016-02-24
    • 2011-08-06
    相关资源
    最近更新 更多