对象映射器将印地语文本转换为特殊字符"???"



我正在数据库中存储印地语。 在我的获取方法中,我正在使用objectMapper将印地语字体转换为特殊字符。没有objectmapper它工作正常。

@CrossOrigin
@RequestMapping(value = "", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> fetchDepartmentInfo() {
try {
List<Map<String, Object>> departmentList = departmentServices.fetchDepartments();
if (departmentList == null || departmentList.isEmpty())
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
else
return new ResponseEntity<String>(new ObjectMapper().writeValueAsString(departmentList), HttpStatus.OK);
} catch (Exception e) {
System.out.println(e);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}

o/p:

[
{
"department": "?? ?? ?????",
"departmentId": 1
}
]

但它应该是:

[
{
"department": "जल कल विभाग",
"departmentId": 1
}
]

只是将mediaType更改为APPLICATION_JSON_UTF8_VALUE

@CrossOrigin
@RequestMapping(value = "", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<?> fetchDepartmentInfo() {
try {
List<Map<String, Object>> departmentList = departmentServices.fetchDepartments();
if (departmentList == null || departmentList.isEmpty())
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
else
return new ResponseEntity<String>(new ObjectMapper().writeValueAsString(departmentList), HttpStatus.OK);
} catch (Exception e) {
System.out.println(e);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}

它解决了我的问题。

您可以启用漂亮的打印配置缩进您的杰克逊映射器:mapper.enable(SerializationFeature.INDENT_OUTPUT);,这应该正确进行转换。

检查序列化功能的文档:

允许启用(或禁用(缩进的功能 底层生成器,使用默认的漂亮打印机(请参阅 JsonGenerator.useDefaultPrettyPrinter(( 了解详细信息(。

最新更新