2012-12-18 99 views
3
public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException { 

    Map countryList = new HashMap(); 

    String str = "http://10.10.10.25/TEPortalIntegration/CustomerPortalAppIntegrationService.svc/PaymentSchedule/PEPL/Unit336"; 

    try { 
     URL url = new URL(str); 

     URLConnection urlc = url.openConnection(); 

     BufferedReader bfr = new BufferedReader(new InputStreamReader(urlc.getInputStream())); 

     String line, title, des; 

     while ((line = bfr.readLine()) != null) { 

      JSONArray jsa = new JSONArray(line); 

      for (int i = 0; i < jsa.length(); i++) { 
       JSONObject jo = (JSONObject) jsa.get(i); 

       title = jo.getString("Amount"); 

       countryList.put(i, title); 
      } 

      renderRequest.setAttribute("out-string", countryList); 

      super.doView(renderRequest, renderResponse); 
     } 
    } catch (Exception e) { 

    } 
} 

我正在嘗試訪問來自liferay portlet類的json對象,我想將任何json字段值的數組傳遞給jsp頁面。如何從java客戶端使用JSON Webservice?

+3

您需要閱讀完整的響應,然後將其轉換爲JSONArray。響應中的每一行都將成爲(無效的)JSON片段,並且不能孤立地進行分析。 – Perception

回答

3

在將其轉換爲JSON數組之前,您需要閱讀完整響應。這是因爲響應中的每一行都將成爲無效的JSON片段,無法單獨進行分析。稍作修改你的代碼應該工作,亮點如下:

// fully read response 
final String line; 
final StringBuilder builder = new StringBuilder(2048); 

while ((line = bfr.readLine()) != null) { 
    builder.append(line); 
} 

// convert response to JSON array 
final JSONArray jsa = new JSONArray(builder.toString()); 

// extract out data of interest 
for (int i = 0; i < jsa.length(); i++) { 
    final JSONObject jo = (JSONObject) jsa.get(i); 
    final String title = jo.getString("Amount"); 

    countryList.put(i, title); 
} 
+0

在最後一行有一些錯誤JSONArray jsa = new JSONArray(builder.toString());不工作,直到現在 – Shibu

+0

我應該包括進口org.json.JSONArray或進口org.json.simple.JSONArray? – Shibu

+0

這是[org.json.JSONArray](http://www.json.org/javadoc/org/json/JSONArray.html)。 – Perception

相關問題