2012-06-27 51 views
1

我有此HashMap <字符串,僱員>()對象和我將其轉換爲JSONArray如下HashMap來JSONArray和處理中的jquery響應

JSONArray jarray = JSONArray.fromObject(myHashMap); 

。注意,在圖中的鍵總是一個數字字面值,但其數據類型爲String。

下面是用於設置json字符串到響應的代碼。

response.setContentType("text/text;charset=utf-8"); 
response.setHeader("cache-control", "no-cache"); 
PrintWriter out = response.getWriter(); 
out.println(jarray.toString()); 
out.flush(); 

JSON字符串我得到的是

[{"1":{"empAge":32,"empEmail":"[email protected]","empId":1,"empName":"myname","empTel":"33445"}] 

如何與鍵值1獲得地圖empName的價值?

$.ajax({ 
type: "POST", 
url: "/MyApp/TestAction.do", 
dataType :"json", 
success: function(response){ 
    alert(response.1[0].empName);// I get java script error in this statement 
    }, 
    error: function(e){ 
     alert('Error: ' + e); 
    } 
}); 

回答

2

您使用了錯誤的標題:

response.setContentType("text/text;charset=utf-8"); 

將其更改爲:

response.setContentType("application/json;charset=utf-8"); 

目前你得到它作爲一個字符串,所以你不能把它作爲一個對象,一旦你改變頭部,你會得到它作爲一個JSON對象,並能夠使用它。作爲一個側面說明,「1」並不是一個非常好的關鍵,如果你可以用一個更具描述性的字符串來代替它,我建議你這樣做。

+0

我已經改變了所提到的內容類型,並且在鍵上附加了一個字符串'emp',所以現在鍵看起來像'emp1'。現在,腳本錯誤消失了,當我嘗試提醒response.emp1.empName我得到'未定義'味精。下面是我通過System.out [{「emp1」:{「empAge」:32,「empEmail」:「[email protected]」,「empId」:1,「empName」:「myname」, 「empTel」:「33445」}] – DDK

+0

做一個console.log()(在javascript中)的響應併發布你得到的信息 – Tomer

+0

我對console.log()沒有任何意見。但是,當我做$ .parseJSON(響應)時,結果爲空。這是否意味着我的json字符串無效?但我已經測試了jsonlint.com中的字符串,並聲明該字符串是有效的。 – DDK