Java 如何根据文件的ID Spring Boot从文件中打印原始json对象
我在本地有一个json文件,其中包含一些数据。我正在编写一个路径,这样当用户执行/person/1时,它只会根据该ID从该person对象的文件返回原始jsonJava 如何根据文件的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] } ]
{
"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