2014-09-30 3 views
-2

Я хочу получить данные json от контроллера Spring в javascript. Это restapi вызов, который возвращает JSON данныеparse/get json from spring mvc controller в javascript

{id: '0', item: [ 
    { 
     id: 'all', 
     text: 'ALL', 
     item: [ 
      { 
       id: 'all-', 
       text: 'ALL-', 
       item: [ 
        { 
         id: 'Market1-0', 
         text: 'Market1', 
         item: [ 
          { 
           id: 'id2', 
           text: 'Project 2' 
          }, 
          { 
           id: 'id1', 
           text: 'Project 1' 
          } 
         ] 
        } 
       ] 
      } 
     ] 
    } 
] 
} 

Вот код для Spring обработчика

public class DashboardHandler { 

public String getProjects() throws ParseException{ 

    SimpleClientHttpRequestFactory rf = new SimpleClientHttpRequestFactory(); 
    rf.setReadTimeout(50000); 
    rf.setConnectTimeout(50000); 

    RestTemplate restTemplate = new RestTemplate(rf); 
    String page = restTemplate.getForObject(
      "http://localhost:9090/mcps/api/v1.0/user/2/projects", 
      String.class); 

    JSONParser parser = new JSONParser(); 
    JSONObject customerListObject = (JSONObject) parser.parse(page); 
    StringBuilder builder = new StringBuilder(); 
    builder.append("{id:'0', item:["); 
    builder.append("{id:'all', text:'ALL', item:["); 
    int i=0; 
    for (Object customer : customerListObject.keySet()) { 
     JSONObject customerJsonObject = (JSONObject) customerListObject 
       .get(customer.toString()); 
     for (Object region : customerJsonObject.keySet()) { 
      JSONObject marketJsonObject = (JSONObject) customerJsonObject 
        .get(region.toString()); 
      for (Object market : marketJsonObject.keySet()) { 
       builder.append("{id:'"+market+"-"+i+"', text:'"+market+"', item:["); 
       i++; 
       JSONObject projectObject = (JSONObject) marketJsonObject 
         .get(market.toString()); 
       for(Object projectId:projectObject.keySet()){ 
        JSONObject projectJsonObject = (JSONObject) projectObject.get(projectId); 
        for(Object project: projectJsonObject.keySet()){ 
         builder.append("{id:'"+projectId+"', text:'"+project+"'},"); 
        } 
       } 

       builder.append("]},"); 
      } 

     } 
    } 
    builder.append("]}]}"); 
    System.out.println(builder.toString()); 

    return builder.toString(); 
} 

} 

И у меня есть контроллер с запроса отображения URL

@Controller 
public class DashboardController { 

@RequestMapping(value = "/getProjects", method = RequestMethod.GET) 
public @ResponseBody String getProjects(HttpServletRequest request) { 
    DashboardHandler dashBoardHandler = new DashboardHandler(); 
    try { 
     return dashBoardHandler.getProjects(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return ""; 
} 

} 

Так что теперь я хочу для доступа к этому/getProjects url в javascript. Может ли кто-нибудь сказать мне, как?

+1

Вы пытались найти что-то вроде "JS получить JSON"? – fast

ответ

0

Вы должны использовать Ajax

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 

<script type="text/javascript"> 
$.ajax({ 
type : 'GET', 
url : '${pageContext.request.contextPath}/getProjects', 
success : function(data) { 
//parse json data 
alert(data.id); 
$('#mydiv').append(data.id); 
//data.id is 0 
//data.item[0].id is 'all' 
//data.item[0].text is 'ALL' 
//data.item[0].item[0].id is 'all-' 
//data.item[0].item[0].text is 'ALL-' 
//data.item[0].item[0].item[0].id is 'Market1-0' 
//data.item[0].item[0].item[0].text is 'Market1' 
} 
}); 
</script> 
</head> 
<body> 
<div id='mydiv'>Hello</div> 
</body> 
</html> 
+0

Спасибо. Не могу сделать это с помощью javascript? – Aniketh

+0

Я не уверен. Но jquery очень популярен в веб-разработке. Это дает больше возможностей для развития. –

Смежные вопросы