возвращение файла JSON как JSONArray в Spring Boot - PullRequest
0 голосов
/ 29 ноября 2018

Я разрабатываю приложение Spring Boot, в котором у меня есть файл свойств JSON:

{
    data: [
        {"firstWebServiceUrl":"http://localhost:8080/firstUrl/"},
        {"secondWebServiceUrl":"http://localhost:8080/secondUrl/"},
    ]
}

Я создал контроллер для чтения и возврата этого файла как org.json.JSONArray объект:

@RestController
@RequestMapping("/Test")
public class MainController {

    @RequestMapping(value = "/getJsonProperties", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public JSONArray getJsonProperties() {
        Resource resource = new ClassPathResource("/static/configs/properties.json");
        InputStream resourceAsStream;
        JSONObject jsonObject = null;
        JSONArray jsonArray = null;
        String resourceAsString = null;
        try {
            resourceAsStream = resource.getInputStream();
            byte[] resourceInBytes = IOUtils.toByteArray(resourceAsStream);
            resourceAsString = new String(resourceInBytes);
            jsonObject = new JSONObject(resourceAsString);          
            jsonArray = jsonObject.getJSONArray("data");
            System.out.println("json array object is " + jsonArray);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonArray;
    }

}

Когда я вызываю этот метод, я вижу вывод в консоли (благодаря sysout):

json array object is [{"firstWebServiceUrl":"http://localhost:8080/firstUrl/"},{"secondWebServiceUrl":"http://localhost:8080/secondUrl/"}]

, как и ожидалось.Однако, когда я вызываю этот метод из браузера, вводя URL: http://localhost:8090/Test/getJsonProperties, я получаю вывод:

{"empty":false}

вместо содержимого.Как я могу вернуть содержимое?

1 Ответ

0 голосов
/ 29 ноября 2018

Возвращает String вместо JSONArray, потому что нет конвертера по умолчанию, который мог бы сериализовать JSONArray в строку JSON:

@RestController
@RequestMapping("/Test")
public class MainController {

    @RequestMapping(value = "/getJsonProperties", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public String getJsonProperties() {
        Resource resource = new ClassPathResource("/static/configs/properties.json");
        InputStream resourceAsStream;
        JSONObject jsonObject = null;
        JSONArray jsonArray = null;
        String resourceAsString = null;
        try {
            resourceAsStream = resource.getInputStream();
            byte[] resourceInBytes = IOUtils.toByteArray(resourceAsStream);
            resourceAsString = new String(resourceInBytes);
            jsonObject = new JSONObject(resourceAsString);          
            jsonArray = jsonObject.getJSONArray("data");
            System.out.println("json array object is " + jsonArray);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonArray != null ? jsonArray.toString() : "[]";
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...