簡體   English   中英

在Spring Boot中將JSON文件作為JSONArray返回

[英]returning JSON file as JSONArray in Spring Boot

我正在開發一個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}

而不是內容。 如何退貨?

返回一個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() : "[]";
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM