글쎄, 나는 기존의 솔루션에 만족하지 않았다. (단순한 json을 사용할 때 오버 헤드가 너무 많거나 너무 느리다). 그래서 여기, 기록을 위해, 'arraybuffer'를 통해 HTML5 솔루션은
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
if (this.status == 200) {
var dv = new DataView(this.response);
var json = {
"info" : {
"took" : 0
},
"route": {
"time": 0,
"distance": 0,
"data" : {}
}
};
var i = 0;
json.info.took = dv.getFloat32(i);
i += 4;
json.route.distance = dv.getFloat32(i);
i += 4;
json.route.time = dv.getInt32(i);
i += 4;
var locations = dv.getInt32(i);
var tmpArray = [];
json.route.data = {
"type" : "LineString",
"coordinates": tmpArray
};
for(var index = 0; index < locations; index ++) {
i += 4;
var lat = dv.getFloat32(i);
i += 4;
var lng = dv.getFloat32(i);
tmpArray.push([lng, lat]);
}
callback(json);
} else
errCallback(e);
};
xhr.send();
은 (서버에 response.setHeader ("액세스 제어 - Allow-을 활성화하기 위해 필요한이 십자가 원본 정책 작업을 만들려면 Origin ","* ")) 및 클라이언트에서 (jQuery.support.cors = true). 여기에 full working example은 간단한 자바 서블릿으로 DataOutputStream을 사용합니다. 대안으로 json fallback이 있습니다.
다른 방법은 모든 숫자를 문자열로 인코딩 한 다음 json에 넣는 것입니다 (base64를 통해).
내가에 stumpled 또 다른 흥미로운 프로젝트를 보내려 할 데이터의 유형
http://binaryjs.com입니까? JSON은 일반적으로 HTTP 압축과 결합 된 좋은 선택입니다. – Bergi
명시된 바와 같이 : 아주 큰 배열의 float/double 형태의 간단한 json – Karussell
@Bergi http 압축 된 json을 읽으려면 Javascript 측에서 무엇을 활성화해야합니까? – Karussell