Java 如何获取映射URL的JSON结果
假设我们有以下控制器Java 如何获取映射URL的JSON结果,java,spring,spring-mvc,spring-data,Java,Spring,Spring Mvc,Spring Data,假设我们有以下控制器 @Controller @RequestMapping("/Index") public class ControllerClass { @RequestMapping("/Result") @ResponseBody public List<Integer> result(){ List<Integer> result = new ArrayList<Integer>(); result.add(1);
@Controller
@RequestMapping("/Index")
public class ControllerClass {
@RequestMapping("/Result")
@ResponseBody
public List<Integer> result(){
List<Integer> result = new ArrayList<Integer>();
result.add(1);
result.add(2);
return result;
}
}
@控制器
@请求映射(“/Index”)
公共类控制器类{
@请求映射(“/Result”)
@应答器
公开名单结果(){
列表结果=新建ArrayList();
结果.增加(1);
结果:增加(2);
返回结果;
}
}
现在我想将URL“/Index/result”的JSON结果存储到一个字符串中。或者简单地说,在应用注释后存储controller的JSON结果。请注意,它不是用于测试的,为此目的考虑的webservice问题。有什么想法吗?
提前感谢。如果您的pom.xml中还没有jackson依赖项,我建议您将它们放在pom.xml中
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.2.3</version>
</dependency>
您可以将Jackson's注入控制器,以手动将结果序列化为JSON
,然后再通过返回
一切正常,我可以在浏览器中获得url的JSON结果。但是我想将控制器结果存储在java代码中,而不是在浏览器中。是否要将其打印到日志文件中?还是希望它持续到会话?你所说的“存储”Gson是什么意思Gson=new Gson();字符串jsonResponse=gson.toJson(结果);如果你想让我说得更清楚,我可以给你json字符串。我想将控制器的json结果作为webservice输出传递。该方法上面有四个注释,每个注释以不同的方式操作该方法的结果。这是一个工作的restful Web服务。你可以用restcontroller代替controller,controller是controller+responsebody的简写,但结果是sameI不理解你的问题。你想在哪里做这个?应用注释后是什么意思?谢谢。但问题是,我想将一个URL传递给servlet并获得JSON结果,而不向控制器或任何服务器端类添加任何内容。
@RequestMapping(value = "/Result", produces = "application/json;charset=utf-8")
@Configuration
public class Config {
@Bean
public ObjectMapper objectMapper() {
// returning a plain ObjectMapper,
// you can change this to configure the ObjectMapper as requiered
return new ObjectMapper();
}
}
@Controller
@RequestMapping("/Index")
public class ControllerClass {
@Autowired
private ObjectMapper objectMapper;
@RequestMapping(value="/Result",
method=RequestMethod.GET,
produces="application/json")
@ResponseBody
public ResponseEntity<String> result(){
List<Integer> result = new ArrayList<Integer>();
result.add(1);
result.add(2);
String jsonResult = objectMapper.writer().writeValueAsString(result);
// here you can store the json result before returning it;
return new ResponseEntity<String>(jsonResult, HttpStatus.OK);
}
}
@Component
public class RestResponseInterceptor implements HandlerInterceptor {
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
// inspect response, etc...
}
}