2012-06-27 2 views
1

맵 키는 항상 숫자는 것을 나는이 HashMap의 < 문자열, 직원>() 객체를하고 난JSONArray에의 HashMap과 JQuery와의 응답을 처리

JSONArray jarray = JSONArray.fromObject(myHashMap); 

참고 다음과 같이 JSONArray로 변환 리터럴이지만 데이터 유형은 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의 값을 얻을 수 있습니다?

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

변경 그것에 :

$.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("application/json;charset=utf-8"); 

현재 한 번, 문자열로 받고 헤더를 변경하면 json 객체로 사용할 수 있고 사용할 수 있습니다.

"1"은 매우 유용한 키가 아니므로 설명적인 문자열로 바꿀 수 있다면 그렇게하는 것이 좋습니다.

+0

언급 한 내용 유형을 변경하고 문자열 'emp'를 키에 추가 했으므로 이제 키는 'emp1'처럼 보입니다. 이제 스크립트 오류가 사라졌고 alert.emp1.empName에 경고를 보내면 '정의되지 않은'메시지가 표시됩니다. 아래는 System.out [{ "emp1": { "empAge": 32, "empEmail": "[email protected]", "empId": 1, "empName": "myname" "empTel": "33445"}] – DDK

+0

응답에 console.log() (자바 스크립트)를 실행하고 게시하십시오. – Tomer

+0

console.log()가 무엇을하는지 전혀 모르겠습니다. 하지만 $ .parseJSON (응답) 할 때 결과는 null입니다. 내 json 문자열이 유효하지 않다는 의미입니까? 하지만 jsonlint.com 문자열을 테스트하고 유효한 문자열을 주장합니다. – DDK