当前位置: 首页 > 知识库问答 >
问题:

指示Jackson从给定方法序列化

吕征
2023-03-14

我使用的是Jackson库vs 2.6.3。我想在类中定义序列化方法,并且我想指示Jackson在序列化对象时调用这个方法。

public interface AClass {

  default String toJSON(){
    return "{JSON}";
  }

}
public class AnotherClass {

  AClass aClass;

}

当我序列化anotherClass时,我“假装”调用了Class中的方法ToJSON来返回对象的JSON视图。

有没有我可以在aclass上使用的注释?

共有1个答案

翟俊茂
2023-03-14

是的,这是可以使用@JSONValue和@JSONRAWValue注释的。这里有一个例子:

public class JacksonValue {
    public interface AClass {

        @JsonValue
        @JsonRawValue
        default String toJSON(){
            return "{\"JSON\":true}";
        }

    }

    public static class AnotherClass {
        @JsonProperty
        AClass aClass = new AClass() {};
    }

    public static void main(String[] args) throws JsonProcessingException {
        final ObjectMapper mapper = new ObjectMapper();
        System.out.println(mapper.writeValueAsString(new AnotherClass()));
    }
}

输出:

{"aClass":{"JSON":true}}
 类似资料:
  • 我正在使用SpringMVC 3.2.4,并希望使用Jackson2将对象序列化为JSON输出。 对象具有递归属性。如果我尝试使用默认的Jackson ObjectMapper序列化它,我会得到一个递归错误。我意识到我可以使用来防止递归,然而,我实际上希望递归能够使在胡子模板中解析更容易。然而,我想限制递归级别。 是否需要指定Jackson序列化程序只递归1级?如果我需要创建自己的序列化程序,我可

  • 但这只有在保证先设置start的情况下才起作用。

  • 我有一个带有一些方法ma、mb、mc的对象A,这个对象实现了一个只有ma和mb的接口B。 当我序列化B时,我希望只有ma和mb作为json响应,但我也得到mc。 我希望自动化这种行为,以便我序列化的所有类都基于接口而不是实现进行序列化。 我该怎么做? 例子: 实现: 序列化: 回应: 预期响应:

  • 问题内容: 我正在实现RESTful Web服务,其中用户必须与请求一起发送签名的验证令牌,以便可以确保请求不会被中间人篡改。我当前的实现如下。 验证令牌是一个VerifData对象,它序列化为String,然后进行哈希处理和加密。 在我的服务中,我将要序列化的数据放入VerifData的实例中,然后使用Jackson ObjectMapper对其进行序列化,并与验证令牌一起传递给验证引擎。 但是

  • 我正在实现一个RESTful web服务,其中用户必须在请求的同时发送一个签名的验证令牌,这样我就可以确保请求没有被中间人篡改。我当前的实现如下所示。 验证令牌是一个VerifData对象,序列化为字符串,然后进行散列和加密。 有办法绕过这件事吗?我可以指定ObjectMapper要映射的属性的顺序吗(像按升序)?或者是否有任何其他方法可以最好地实现此验证步骤。客户端和服务器实现都是我开发的。我使

  • 我有下面的课: 我希望它从Jackson处理的以下JSON中反序列化。 jackson-datatype-joda(https://github.com/fasterxml/jackson-datatype-joda) 自定义序列化程序(公共类JodaDateTimeJsonSerializer扩展JsonSerializer{...}-Spring@ResponseBody Jackson Js