Java 如何根据文件的ID Spring Boot从文件中打印原始json对象

Java 如何根据文件的ID Spring Boot从文件中打印原始json对象,java,json,spring-boot,Java,Json,Spring Boot,我在本地有一个json文件,其中包含一些数据。我正在编写一个路径,这样当用户执行/person/1时,它只会根据该ID从该person对象的文件返回原始json { "id": 1, "name": "Sally", "age": "12", "likes": [cats, dogs, rabbits] }, { "id": 2, "name": "jenny", "age": "22", "likes": [games, makeup] } ]

我在本地有一个json文件,其中包含一些数据。我正在编写一个路径,这样当用户执行/person/1时,它只会根据该ID从该person对象的文件返回原始json

  {
  "id": 1,
  "name": "Sally",
  "age": "12",
  "likes": [cats, dogs, rabbits]
  },
  {
  "id": 2,
  "name": "jenny",
  "age": "22",
  "likes": [games, makeup]
  }
]
这个想法是当用户转到localhost:8080/people/1时,他们会返回到屏幕上

{
  "id": 1,
  "name": "Sally",
  "age": "12",
  "likes": [cats, dogs, rabbits]
  }

我尝试使用Persondo,我可以返回所有人,我知道通过一些工作,我可以通过ID过滤这些数据,但我想要的是原始数据,而不是通过DTO方式获得的更干净的java/Spring引导版本

使用Gson,请尝试以下代码:

    @RequestMapping(value = "/people/{id}", method = RequestMethod.GET)
public ResponseEntity<JsonNode> getPeopleInfo(@PathVariable(name = "id") Integer id) throws Exception {
    Reader reader = new FileReader(new File("D:\\codes\\gitlab\\response.json"));
    ObjectMapper mapper = new ObjectMapper();

    JsonNode jsonNode = mapper.readValue(reader, JsonNode.class);
    for (int i = 0; i < jsonNode.size(); i++) {
        JsonNode element = jsonNode.get(i);
        if (element.get("id").asInt() == id) {
            return new ResponseEntity<>(element, HttpStatus.OK);
        }
    }
    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
@RequestMapping(value=“/people/{id}”,method=RequestMethod.GET)
公共响应属性getPeopleInfo(@PathVariable(name=“id”)整数id)引发异常{
Reader Reader=newfilereader(新文件(“D:\\code\\gitlab\\response.json”);
ObjectMapper mapper=新的ObjectMapper();
JsonNode=mapper.readValue(reader,JsonNode.class);
对于(int i=0;i
一直工作到返回(通过调试检查)页面错误:出现意外错误(类型=内部服务器错误,状态=500)。无法写入JSON:JsonObject;嵌套异常为com.fasterxml.jackson.databind.JsonMappingException:JsonObject(通过引用链:com.google.gson.JsonObject[“asBoolean”])org.springframework.http.converter.httpmessagenetwitableexception:无法写入JSON:JsonObject;嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:JsonObject(通过引用链:com.google.gson.JsonObject[“asBoolean”])必须将getPersonInfo(int-id)更改为(@PathVariable int-id)才能使用路径映射我更改为使用fastjson