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

如何使用Builder模式和@JsonDeserialize反序列化Spring RestTemplate的响应json

秦博达
2023-03-14

如何配置RESTTemplate来使用Jackson的@JsonDeserialize反序列化响应Json?

我的基于Builder模式的域类和Jackson的@JSONdeserialize marshall和unmarshall fine在单元测试中都很好。但是,当与Spring的RESTTemplate(Spring 3.1)结合使用时,它会失败。

@JsonDeserialize(builder = Policy.Builder.class)
public final class Policy implements Comparable, Serializable {

    // immutable attributes

    private Policy(Builder builder) {
        ...
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Builder {

        /// withXXX methods 

        public Policy build() {
            return new Policy(this);
        }
    }
}
Policy policy = new Policy.Builder().withXXX()...build();
restTemplate.postForObject("http://localhost:8080/policies/policy.json", policy, String.class);
org.springframework.web.client.HttpServerErrorException: 500 Could not instantiate bean    
class [xxx.domain.Policy]: No default constructor found; nested exception is 
java.lang.NoSuchMethodException: xxx.domain.Policy.()

共有1个答案

夏祺然
2023-03-14

如果已经定义了构造函数,则需要包含默认构造函数。

 类似资料:
  • 将这些注释应用于mixin没有任何效果。 我发现唯一有效的方法是利用创建的包访问AllArgsConstructor,并用以下构造函数填充mixin 这显然是不可取的,因为它需要显式地迭代和硬编码每个类属性,使得mixin对外部POJO中的任何更改都很脆弱。

  • 本文向大家介绍Java使用@JsonDeserialize注解实现自定义反序列化器,包括了Java使用@JsonDeserialize注解实现自定义反序列化器的使用技巧和注意事项,需要的朋友参考一下 @JsonDeserialize注解用于在将JSON反序列化为Java对象时声明自定义反序列化器。我们可以通过使用泛型类型Employee 继承 StdDeserializer 类来实现自定义反序列化

  • 我收到Kafka主题中的二进制Avro文件,我必须对它们进行反序列化。在Kafka收到的消息中,我可以在每条消息的开头看到一个模式。我知道不嵌入模式并将其与实际的Avro文件分离是一种更好的做法,但我无法控制生产者,也无法更改。 我的代码在Apache Storm上运行。首先,我创建一个读卡器: 然后,我尝试反序列化消息,但不声明架构: 但当消息到达时,我会收到一个错误: 我看到的所有答案都是关于

  • 问题内容: 我正在读取Gson的JSON响应,该响应返回somtimes a,因为期望值设置为空字符串。现在,我想知道处理这种异常的最佳方法是什么。如果该值为空字符串,则反序列化应为0。 预期的JSON响应: 但是有时运行时是一个空字符串: java类如下所示: 反序列化是这样的: 因为返回一个空String而不是一个int值,所以抛出a 。 有没有办法告诉Gson:“ 如果反序列化Type 的字

  • 问题内容: 我有一个问题。我想使用JAXB将一个对象转换为另一个对象。就像在中,我有一个class 和另一个class ,它们都有相同的参数,实际上都是相同的(复制粘贴),但是包不同。我想使用进行它们之间的转换。 怎么做,请帮帮我。 问题答案: 您可以执行以下操作。 注意: 不需要利用JAXBSource将数据具体化为XML。 它在对象模型上不需要任何注释。 com.home.Student co