我已經從服務器請求了一個二進制文件,並且我想將此文件中的數據反序列化爲類對象。以下是我的代碼。有人可以告訴我是否有更優雅和便捷的方法來做到這一點,因爲我有幾個不同的類對象。dart:如何將HttpRequest.response中的數據緩衝區讀取到/去串行到類對象中
import 'dart:html';
import 'dart:typed_data';
class Header {
final ByteData magic = new ByteData(3);
int version;
int minorVersion;
...// Other data members.
}
void main() {
var path = 'url to a binary file';
var request = new HttpRequest();
request
..open('GET', path)
..responseType = 'arraybuffer'
..onLoadEnd.listen((e) => requestComplete(request))
..send();
}
void requestComplete(HttpRequest request) {
if (request.status == 200) {
print('headers: ${request.responseHeaders}');
print('type: ${request.responseType}');
ByteBuffer byteBuffer = request.response;
var magic = byteBuffer.asUint8List(0, 3);
print(new String.fromCharCodes(magic));
var data = byteBuffer.asInt32List(4, 8);
print(data);
...// Process other data
} else {
print('Request failed, status = ${request.status}');
}
}
我不知道這個問題是關於什麼。你如何序列化服務器端的類?二進制數據如何編碼? –
感謝您的回覆。不是類,而是類對象包含的數據結構。二進制文件從另一個軟件轉儲。在一些面向對象的語言中,像c/C++,c#,java等,有一些方法可以讀取/反序列化數據結構。但是我沒有在JavaScript和Dart中找到方法。 – bopomofo
看到我的答案。如果您提供更多信息,您可以在項目中找到可能性,我可以詳細闡述可能的方法。 –