java - Spring RestTemplate boolean 值反序列化

标签 java json resttemplate spring-rest

我正在使用 spring RestTemplate 将 json 反序列化为对象。我面临的挑战是 json 中的 boolean 值全部大写。当我尝试反序列化它们时,我收到 HttpMessageNotReadableException。

spring.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type java.lang.Boolean from String "FALSE": only "true" or "false" recognized;

所以我的问题是如何为这个 boolean 值添加自定义映射。

ResponseEntity<List<MyObject>> responseEntity = restTemplate.exchange(url,
                HttpMethod.GET,
                null,
                new ParameterizedTypeReference<List<MyObject>>() {
                });
        return responseEntity.getBody();

最佳答案

您可以使用自定义反序列化器。看一下 com.fasterxml.jackson.databind.JsonDeserializer 注释。

请参阅下面的 MyBooleanDeserializer 示例。它可以处理大写字母中的值:

public class MyObject {
    @JsonDeserialize(
            using = MyBooleanDeserializer.class,
            as = Boolean.class
    )
    private boolean bool;
}
class MyBooleanDeserializer extends JsonDeserializer {
    @Override
    public Object deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
        return Boolean.parseBoolean(jsonParser.getValueAsString().toLowerCase());
    }
}

关于java - Spring RestTemplate boolean 值反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59262946/

相关文章:

java - 在 Spring 中消耗大量 json 有效负载的最佳方法?

java - 如 Effective Java 一书中所述,理解 Java 中非静态成员类的创建

java - java类继承和javabean继承有什么区别?

java - % 和/在 Java 正则表达式中的问题

java - Spring RestTemplate 在从 Twitter 获取数据时提供 401 Authorization Required

java - RestTemplate 映射到 Map 而不是字段

java - 如何跨不同Android Fragment维护一个模型对象?

javascript - 如何从 dojo.data.ItemFileReadStore 检索值

javascript - 获取json数组值并通过jquery将其放入单独的div中

javascript - 谷歌闭包编译器和 json