1. 程式人生 > 實用技巧 >Spring-RestTemplate解析json檔案

Spring-RestTemplate解析json檔案

配置bean:

      @Bean(name="agvRestTemplate")
	public RestTemplate agvRestTemplate() {
		RestTemplate restTemplate = new RestTemplate();
                //重點:用於將JSON、application/octet-stream
		MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
		mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM));
		restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
		return restTemplate;
	}
        注入
        @Autowired
	@Qualifier(value = "agvRestTemplate")
	RestTemplate agvRestTemplate;

        String url = agvResource.getCallmaterial();
        Map param = new HashMap();
	param.put("orderId", agvLog.getOrderId());
	Map params = new HashMap();
	params.put("call_request", param);
        
        //postForObject(url,param1,ClassName),url:請求地址,param1:請求引數 ClassName請求引數對應的實體類名。
        //postForObject主要是將請求引數轉化為HttpEntity物件
        //url為String型別,會自動轉換成encodedurl,為java.net.URI,會進一步encoded,畫蛇添足[1]
	Map result = agvRestTemplate.postForObject(url, params, Map.class);

        //getForObject(url,respType,MapVariables),respType:響應資料的型別,MapVariables:urlvariable引數,Map型別,key值需對應url中的變數
        //url:http://127.0.0.1:8080/agv/require?order_id={orderId},注意orderId
        Map result = agvRestTemplate.postForObject(url, params, Map.class);

【1】:出處