2011-11-05 5 views
1

내 Android 애플리케이션에서 다음 Java를 사용하여 내 WCF 서비스의 사용자 이름을 예상하고 사용자 이름 배열을 생성 한 다음 회 전자를 채 웁니다.JSONObject를 JSONArray로 변환 할 수 없습니다.

JSONArray mtUsers = new JSONArray(new String(buffer)); 

그러나 나는 다음과 같은 오류가로 된 JSONObject를 받고있는 것으로 보인다는

Android JSONObject cannot be converted to JSONArray 

이 같은 모습을 반환 된 JSON,

{"GetUserNamesResult":[{"UserName":"Peyton"},{"UserName":"Drew"},{"UserName":"Brett"}]} 

는의 코드 내 서비스, ​​

인터페이스 :

[OperationContract] 
[WebInvoke(Method = "GET", 
    ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Wrapped, 
    UriTemplate = "GetUserNames")] 
IList<UserNames> GetUserNames(); 

그리고 클래스 :

public IList<UserNames> GetUserNames() 
{ 
    IList<UserNames> lstusernames = new List<UserNames>(); 
    var usernames = from p in _db.Users 
      select p; 
    foreach (User singleUsernames in usernames) 
    { 
     UserNames a = new UserNames(); 
     a.UserName = singleUsernames.UserName; 

     lstusernames.Add(a); 
    } 
    return lstusernames; 
} 

무엇을 JSON이 같이 있어야하고 사람이 내가 잘못 뭘하는지 볼 수 있습니다 ???

문자열이나 문자열 []을 반환하려고 어둠 속에서 비틀 거리는 대신에, 나는 너희들과 친구들에게 물어볼 것이라고 생각했다.

건배,

마이크.

답변

9

실제로 jsonObject를 얻고 있습니다. 첫 번째 키 "GetUserNamesResult"의 값은 JSONArray입니다.

그래서 이렇게 .. 출동

JSONObject jsonResponse = new JSONObject(new String(buffer)); 
JSONArray mtUsers = jsonResponse.getJSONArray("GetUserNamesResult"); 
+1

을! 고마워요, 야쉬 완스. 그건 내 첫 SQL 서버, 안드로이드 응용 프로그램에 WCF 서비스를 얻으려면 어떻게해야 할 마지막 일이었습니다, 나는 10 일 전부터 착수했고 지금은 작동합니다! 이제 JSON, 메모리 누수가 반환 된 정리 작업은 지난 10 일 동안 내가 읽은 다른 모든 것들을 처리합니다. 감사합니다. 환호, 마이크. 추신 : 당신의 금성을 사랑하세요. 아마 언젠가 그 중 하나를 얻을 수 있습니다! –

+0

굉장 .. thnks .. –

관련 문제