Я хочу передать 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, я бы не хотел сначала анализировать его в объект.
jsonFile выглядит так:
{
"thing1": [
{
"list1": [
"abc"
],
"subthing1": {
"list1": [
"aaa",
"bbb"
],
"list2": [
"ccc"
],
"list3": [
"zzz"
],
},
"subthing2":
...
Изменить 1: возврат объекта JSON в качестве ответа в Spring Boot отвечает в последнем абзаце: «Если вы хотите вернуть сериализованную строку json, просто верните строку», что для меня красное: «если у вас есть json в строке, верните строку»