2011-02-23 9 views
1

내 스칼라 코드에 JSON lib net.sf.json (http://json-lib.sourceforge.net/apidocs/net/sf/json/package-summary.html)을 사용하고 있습니다. 또한 유닛 테스트를 위해 BDD 프레임 워크 (http://code.google.com/p/specs/)를 사용하고 있습니다.JSON 배열을 스칼라로 반복

doBefore { 
    iter = serversJSON.iterator() 
} 

serversJSON가 JSONArray 객체이며 다음 doBefore 블록에서 다음 코드가있다. doBefore 블록 밖에서 다음과 같이 변수를 선언했습니다.

var serversJSON:JSONArray = null 
var iter:Iterator[JSONArray] = null 

컴파일시 다음 오류가 발생합니다.

error: type mismatch; found : java.util.Iterator[?0] where type ?0 required: java.util.Iterator[net.sf.json.JSONArray] iter = serversJSON.iterator()

나는 iter 오브젝트를 doBefore 외부에 선언 한 방식이 맞지 않다고 생각합니다. 올바르지 않습니다. 이 문제를 해결하는 방법?

도와주세요 감사합니다.

답변

4

표시된대로 here, JSON 라이브러리의 iterator 메서드는 Iterator[JSONArray]이 아닌 Iterator의 원시를 반환합니다. 다음과 같이 선언해야합니다.

var serversJSON:JSONArray = null 
var iter:Iterator[_] = null