2013-09-30 33 views
0

您好我正在製作一個Maven休息Web服務應用程序,我需要在我的JSONRest代碼中獲取hashmap值。我怎樣才能做到這一點?如何在jsonrest腳本中hashmap值

這裏是我的服務代碼,打印出的JSON值:

@GET 
@Path("/ind") 
@Produces("application/json") 
public HashMap<String,String> json() 
{ 
    HashMap<String,String> m = new HashMap<String,String>(); 

    m.put("Fiyas", "basha"); 
    m.put("Rajesh", "Babu"); 

    JSONObject j = new JSONObject(); 

    try { 
     if(j != null) 
     j.put("emp", m); 
    } catch (JSONException ex) { 
     ex.getMessage(); 
    } 

    return m; 
} 

它打印{"Fiyas":"basha","Rajesh":"Babu"}

現在我需要把這種JSON值選擇框在我的道場特定JSON EMP關鍵腳本

我JSONRest代碼:

<script> 
    require(["dojo/store/JsonRest", "dojo/dom-construct"], function(JsonRest, domConst){ 
     var store = new JsonRest({ 
      target: "http://localhost:8080/userservices/rest/rest/ind", 
     }); 

     store.query().then(function(jsonData){ 
      alert(jsonData.emp); 
      domConst.place("<option value=''>Year's of Exp</option>","Experience"); 
      for(var i in jsonData.emp) 
      { 
       domConst.place("<option value="+jsonData.emp[i]+">" + jsonData.emp[i] + "</option>","Experience"); 
      } 
     }); 
    }); 
</script> 

我得到undefined,並且無法獲取此腳本中的值,但是我在firebug中獲得了響應和JSON值。

如何逐個獲取散列表值?請,任何幫助將不勝感激,並向我暗示我做錯了什麼。

請感謝

回答

0

如果你彈開一個Java servlet,你需要通過JSON字符串回前端作爲響應。我不知道你的結構是什麼,但如果你的servlet擴展HttpServlet,你應該這樣做之流的東西:

@Override 
protected void doGet(final HttpServletRequest request, final HttpServletResponse response) { 
    HashMap<String, String> m = json(); 
    JSONObject j = new JSONObject(); 

    try { 
     if(j != null) { 
      j.put("emp", m); 
     } 
    } catch (JSONException ex) { 
     ex.getMessage(); 
    } 

    // Send the JSON string back 
    response.getWriter().print(j.toString()); 
} 

而且你json()方法可以修剪下來一點:

@GET 
@Path("/ind") 
@Produces("application/json") 
public HashMap<String,String> json() 
{ 
    HashMap<String,String> m = new HashMap<String,String>(); 

    m.put("Fiyas", "basha"); 
    m.put("Rajesh", "Babu"); 

    return m; 
} 
0

store.query調用的響應應該是一個哈希映射數組,而不是單個對象。 store.get是什麼返回一個單一的對象。對store.query的響應也需要具有Content-Range標頭來描述服務器上有多少個可用對象。這全部記錄在JsonRest商店的Implementing a REST server文檔中。