在Spring Boot中以JSONArray的形式返回JSON文件



我正在开发一个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}

而不是内容。如何返回内容?

返回字符串而不是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() : "[]";
}
}

最新更新