2013-06-16 4 views
0

내 Parse.com 클라우드 기능 (백엔드)에서 내 안드로이드 응용 프로그램으로 간단한 자바 스크립트 객체를 전달하려고합니다.javascript 객체를 java의 JsonObject에 전달하십시오.

:

여기
response.success(resp); // {avgRate = 4,numberOfRaters = 1} 
response.success(JSON.stringify(resp)); // {"avgRate":4,"numberOfRaters":1} 

내가 자바에서 그것을 얻을 방법은 다음과 같습니다

다음
function Rate() 
{ 
    this.avgRate = 0.0; 
    this.numberOfRaters = 0; 
} 

내가 그것을 (2 옵션)을 통과하는 방법입니다 : 여기

는 자바 스크립트 클래스의 코드
Object test = ParseCloud.callFunction("createNewRate", params); // test is {avgRate = 4,numberOfRaters = 1} or {"avgRate":4,"numberOfRaters":1} (option 1 or 2) 
JSONObject response = ParseCloud.callFunction("createNewRate", params); // here is a crash 

오류는 다음과 같습니다.

06-16 23:51:44.337: E/AndroidRuntime(13892): Caused by: java.lang.ClassCastException: java.util.HashMap cannot be cast to org.json.JSONObject 

어떻게 올바르게 처리해야합니까?

감사

답변

1

ParseCloud.callFunction (...)가되는 HashMap을 반환 것으로 보인다되지 않은 된 JSONObject (당신이 개체로 자바 변수를 설정할 때 충돌 했습니까?). 하나의 옵션은 JSONObject에서 HashMap으로 응답의 변수 유형을 변경 한 다음지도를 반복하고지도의 키 - 값 쌍을 사용하여 수동으로 JSONObject를 작성하는 것입니다. 다음은 해시 맵을 반복하는 방법의 예입니다.

Iterate through a HashMap

은이 된 JSONObject을 할 필요가없는 경우, 당신은 된 JSONObject를 생략 할 수 있으며 원하는대로 값을 사용합니다.

+0

'Java 변수를 Object로 설정할 때 충돌이 발생 했습니까? ': 충돌하지 않는 것이 좋습니다. 'Rate' 객체의 자바 스크립트 배열을 전달하여'JSONArray'를 통해 그것을 반복하고'JSONObject'를 추출 할 때마다 모든 것이 잘 작동하기 때문에 매우 이상합니다. 'HashMap'을 사용하는 솔루션은 좋지만 코드와 일관성을 유지하고 싶습니다. 아마도 자바 스크립트 (백엔드)에서 할 수있는 일이있을 것입니다. 감사! – vlio20

관련 문제