Autobeans의 컨텍스트에서 Arrays와 JSNI로 어떻게 든 어려움을 겪고 있습니다.
내 GWT 프로젝트 중 하나에서 JSON을 사용하여 백엔드에서 데이터를 검색합니다.
데이터가 클라이언트에서 검색되면 맞춤 시각화 위젯 (자바 스크립트로 개발 됨)을 사용하여 시각화하고 싶습니다.AutoBean, Arrays/Lists 프로퍼티와 JSNI
JSON 구조 :
{'ids':[1,2,3,4],'data':[[1.0],[1.0,2.0],[1.0,2.0,3.0] ... ]}
은 기본적으로 내 JSON 페이로드에 두 개의 데이터 세트를
다음은 구성 요소입니다. IDS는 클라이언트의 데이터를 구문 분석하는 다른 방법이 물론 있습니다 수레 (float[][]
)
의 배열의 배열의 int (int[]
) 및 데이터의 배열입니다. AutoBeans를 사용하기로 결정했습니다. 그래서 json 구조를위한 인터페이스를 정의했습니다.
AutoBean :
interface MyData {
List<Integer> ids;
List<List<Float>> data;
}
데이터를 구문 분석 잘 작동합니다.
function api_setData(ids,data) {
//ids should be an Array of Ints
//data should be an array of array of Floats.
}
문제는 JSNI로 내가 일반 자바 배열을 사용할 수 없다는 것입니다 :
내 사용자 정의 시각화 위젯은 다음과 같습니다 데이터를 설정하는 API 기능을 가지고 있습니다. JsArray
을 사용해야합니다.
public final native void setData(JsArrayInteger ids,JsArray<JsArrayInteger> data /*-{
this.api_setData(ids,data);
}-*/;
그래서 나는 나의 AutoBean 특성 (데이터 및 IDS) JsArray 인스턴스로 변환해야합니다. 더 좋고/더 좋은 방법이 있습니까?
어쩌면 JSONParser
대신 AutoBeans
대신 사용해야합니까?
감사 토마스를 피드백 :
당신이 JSON을 구문 분석하고 위젯을 줄 필요가
. AutoBean이 내 사용 사례에 가장 적합하지 않을 수도 있습니다. 나는 JSO와 AutoBean의 성능 관점에서 똑같이 빠르지 만 (내 데이터 배열은 200k float 값을 가질 수있다) –JSO는 항상 AutoBeans보다 성능이 우수합니다. AutoBeans에는 JSO 주위에 래퍼가 있기 때문입니다. 그들은 매우 래퍼라고 생각하며 필요에 따라 인스턴스화되기 때문에 일반적으로 문제가되지 않습니다. 하지만 여전히. –