Spring RestController:返回JSON资源

时间:2018-08-20 22:45:01

标签: java json spring resources

如何使用Spring在localhost上存储JSON?我想通过RestController从项目的资源目录中提供JSONFile。

到目前为止,我有:

@RestController
public class JSONRestController {

    @GetMapping("/list")
    public String listUsers(){
        ClassLoader classLoader = getClass().getClassLoader();
        File file = new File(classLoader.getResource("fileName").getFile());
        //or with an external library: org.springframework.util.StreamUtils
        String msg = StreamUtils.copyToString( new ClassPathResource("list.json").getInputStream(), Charset.defaultCharset()  );

        return file.toString() //not an existing method
    }
}

目的是拥有一个Spring应用程序,该应用程序可以通过REST端点从资源中提供JSON文件。我想从资源目录中获取文件,然后从ResController端点将其作为JSON返回。然后,我希望能够使用源自另一个也在本地主机上的应用程序的GET请求访问它。

1 个答案:

答案 0 :(得分:0)

定义一个RestController,它从资源目录中获取JSON并通过REST端点返回。 这里资源中的JSON称为items.json,端点将为localhost:8080/db(假设您没有更改server.port属性)。

@RestController
public class JSONController {

private JSONObject jsonObject;

    @GetMapping("/db")
    @CrossOrigin
    public JSONObject getJSON(){

        try {
            Resource resource = new ClassPathResource("/items.json");
            InputStream resourceInputStream = resource.getInputStream();
            JSONParser jsonParser = new JSONParser();
            jsonObject = (JSONObject)jsonParser.parse(
                    new InputStreamReader(resourceInputStream, "UTF-8"));

        } catch (IOException | ParseException e) {
            e.printStackTrace();
        }

        return jsonObject;
    }
}