我如何将json响应转换为TXT TAB分隔的文件rest API java?



我有一个sql查询。

这是我的abc类

public class Abc {

private Integer ABC_ID;
private String RECIP_ID, RECIP_FIRST_NAME, RECIP_MIDDLE_NAME;

public Abc() {
//super();
// TODO Auto-generated constructor stub
}
}

和其余的是getter和setter;

@RequestMapping(value = "/abc/export", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<List<abc>> getProviderExport(@RequestParam String id, HttpServletResponse response){

List<abc> abcdetails = jdbcTemplate.query(sqlQuery, new BeanPropertyRowMapper<abc>(abc.class));
HttpHeaders responseHeaders = new HttpHeaders();
//responseHeaders.setContentType(MediaType.TEXT_PLAIN);
String filename1 = "output.txt";
//responseHeaders.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
responseHeaders.add("Content-Disposition","attachment; filename="+filename1);

return new ResponseEntity<>(abcdetails, responseHeaders, HttpStatus.OK);
}

当我执行上述代码并运行api时,我的api提示将输出文件保存为output.txt,但当我打开输出文件时,内容仍然是json格式。谁能帮助我如何实现output.txt文件,使用TAB分隔和大写。

因为您返回ResponseEntity<List<abc>>List<>自动转换为array JSON。您需要返回一个ResponseEntity<String>。因此,将List<abc>转换为String

像这样:

final StringBuilder textData = new StringBuilder();
for (final Abc abcDetail : abcdetails) {
final String line = abcDetail.getRECIP_FIRST_NAME() + " " + abcDetail.getRECIP_ID() + " ";//You can add your other field
textData.append(line).append("n");
}
return new ResponseEntity<>(textData.toString(), responseHeaders, HttpStatus.OK);

您必须使用Jackson json Java解析器将json格式转换为文本格式,我附加了一个关于如何将jsno转换为带有制表符分隔和大写的txt文件的简短示例的链接。

链接:https://www.journaldev.com/2324/jackson-json-java-parser-api-example-tutorial

相关内容

  • 没有找到相关文章

最新更新