0

我正在使用 springboot 版本 = 1.5.13.RELEASE。如果我通过第一种方式使用响应实体中的对象返回数据,则它返回字符 Ã 作为Ã\u008d 并且如果我通过第二种方式使用 ObjectMapper 将对象转换为字符串并将其作为字符串的响应实体返回,则返回字符Ã正确的。如果我在 ResponseEntity 中使用对象作为输出,您能否请教为什么会出现问题。我需要做任何配置吗?我还尝试使用 (.contentType(MediaType.APPLICATION_JSON_UTF8)) 使用 UTF-8 的 MimeType,但它也不起作用。请帮助

1) ResponseEntity 中的返回对象

 @GetMapping("v1/testAPI")
            @CrossOrigin(origins = "*") 
            public ResponseEntity<TESTClass> gettstDetails(@RequestParam(value = "param", required = false) String param){
    TESTClass objTESTClass= new TESTClass();
 objTESTClass.setOutputA("-BRASÃLIA BR");

 return ResponseEntity.ok(objTESTClass) ;
        }

1) 在 ResponseEntity 中返回字符串

     @GetMapping("v1/testAPI")
                    @CrossOrigin(origins = "*") 
                    public ResponseEntity<String> gettstDetails(@RequestParam(value = "param", required = false) String param){
            TESTClass objTESTClass= new TESTClass();
         objTESTClass.setOutputA("-BRASÃLIA BR");
     ObjectMapper objectMapper = new ObjectMapper();

return ResponseEntity.ok( objectMapper.writeValueAsString(objTESTClass));
                }

我的 TESTClass 如下所示

public class TESTClass{
    @JsonProperty("outputA")
    private String outputA;
    @JsonProperty("outputB")
    private String outputB;

    public String getOutputA() {
        return outputA;
    }

    public void setOutputA(String outputA) {
        this.outputA= outputA;
    }

    public String getOutputB() {
        return outputb;
    }

    public void setOutputB(String outputb) {
        this.outputB= outputB;
    }
}
4

1 回答 1

0

问题通过使用下面的代码解决,然后是下面的线程 Java Spring resttemplate 字符编码

RestTemplate objRestTemplate = new RestTemplate();

objRestTemplate.getMessageConverters()
                .add(0, new StringHttpMessageConverter(Charset.forName(UaofConstants.UTF_8)));
于 2019-05-03T09:07:35.337 回答