【发布时间】:2018-11-14 22:43:12
【问题描述】:
我想根据请求将 JSON 传递给客户端。我的实际代码如下所示:
...
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.Resource;
...
@RestController
public class Controller {
@Value("classpath:file.json")
private Resource jsonFile;
@GetMapping(path ="json", produces = "application/json")
public String getJSON() {
try (InputStream in = jsonFile.getInputStream()) {
return IOUtils.toString(in, StandardCharsets.UTF_8.name());
}
catch ...
}
}
...
jsonFile 是我想要将其内容发送回用户的 .json 文件,@Value 注释添加了类路径。
问题是:响应不仅是json,而且换行符被编码为\n,整个JSON被封装在引号中,使其成为一个大字符串而不是一个对象。由于 JSON 实际上是一个 .json 文件,我不想先将其解析为对象。
json文件看起来像:
{
"thing1": [
{
"list1": [
"abc"
],
"subthing1": {
"list1": [
"aaa",
"bbb"
],
"list2": [
"ccc"
],
"list3": [
"zzz"
],
},
"subthing2":
...
编辑 1: Returning JSON object as response in Spring Boot 的答案最后一段指出“如果你想返回一个 json 序列化字符串,那么只需返回该字符串。”,对我来说是红色的:“如果你有一个json中的字符串,返回字符串"
【问题讨论】:
-
什么是var?它在哪里声明?
-
你得到了字符串,因为你的代码这么说。即返回 IOUtils.toString(in, StandardCharsets.UTF_8.name());请解释一下代码中的 var 是什么。
-
对不起,没有看到你错过了什么信息,希望这是你要求的吗?还修复了错误地是 ät.RequestController 的 Class 注释被正确的 ät.RestController
标签: json spring-boot request-mapping