Java 将嵌套的json映射到具有原始json值的pojo

Java 将嵌套的json映射到具有原始json值的pojo,java,json,spring,rest,jackson,Java,Json,Spring,Rest,Jackson,我有一个嵌套的json pojo,其中json的嵌套部分用@JsonRawValue标记。我试图用rest模板映射它,但我得到了错误 JSON解析错误:无法反序列化START_对象标记之外的java.lang.String实例 嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException 这就是我的响应对象的外观: import com.fasterxml.jackson.annotation.JsonRawValue; pu

我有一个嵌套的json pojo,其中json的嵌套部分用@JsonRawValue标记。我试图用rest模板映射它,但我得到了错误 JSON解析错误:无法反序列化START_对象标记之外的java.lang.String实例

嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException

这就是我的响应对象的外观:

import com.fasterxml.jackson.annotation.JsonRawValue;

public class ResponseDTO {

    private String Id;
    private String text;
    @JsonRawValue
    private String explanation;

    //getters and setters;

}
其中解释是映射到字符串的json。这对postman、swagger很好,我在响应中看到了json的解释

但当我使用Rest模板测试它时:

    ResponseEntity<ResponseDTO> resonseEntity = restTemplate.exchange(URI, HttpMethod.POST, requestEntity, ResponseDTO.class);

Jackson告诉您,它不能将错误日志中的对象插入字符串中

@JsonRawValue在将对象序列化为JSON格式期间使用。这是一种指示字符串字段按原样发送的方式。换句话说,目的是告诉Jackson字符串是有效的JSON,应该在不转义或引用的情况下发送

相反,您可以为Jackson提供一个自定义方法来设置字段值。使用JsonNode作为参数将强制Jackson传递原始值。从中可以获得字符串表示形式:

公众阶级响应{ 私有字符串Id; 私有字符串文本; 私有字符串解释; //接受者和接受者; @JSONProperty解释 私有void解包解释JsonNode解释{ this.explainion=explainion.toString; } }
@安基特,如果这个答案有帮助,请接受它。
org.springframework.web.client.RestClientException: Error while extracting 
response for type [class com.**.ResponseDTO] and content type 
[application/json;charset=utf-8]; nested exception is 
org.springframework.http.converter.HttpMessageNotReadableException: JSON 
parse error: Cannot deserialize instance of java.lang.String out of 
START_OBJECT token; nested exception is 
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot 
deserialize instance of java.lang.String out of START_OBJECT token
     at [Source: (PushbackInputStream); line: 1, column: 604] (through 
reference chain: com.****.ResponseDTO["explanation"])