我有一个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