簡體   English   中英

如何獲取映射URL的JSON結果

[英]How to get JSON result of a mapped URL

假設我們有以下控制器

@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;
  }
 }

現在,我想將URL“ / Index / Result”的JSON結果存儲到字符串中。 或者簡單地,在應用注釋后存儲控制器的JSON結果。 請注意,這不是出於此目的考慮的測試和網絡服務問題。 有什么想法嗎? 提前致謝。

您可以將Jackson的ObjectMapper注入到控制器中,以在通過ResponseEntity返回之前手動將結果序列化為JSON

@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);
   }
}

編輯

您也可以嘗試定義HandlerInterceptor來捕獲您感興趣的請求的響應主體。

@Component
public class RestResponseInterceptor implements HandlerInterceptor {

      public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
          // inspect response, etc...
     }
}

我建議將傑克遜依賴項放入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>

您也可以像這樣更新您的請求映射

@RequestMapping(value = "/Result", produces = "application/json;charset=utf-8")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM