2016-12-26 3 views
0

json 파일에 ArrayBuffer를 저장하는 방법은 무엇입니까? 나는 이것을 위해 electron-config를 사용하지만 config.json에서 "{}"을 발견했습니다. 나는 (code) ArrayBuffer를 문자열로 변환하려고 시도하지만 ArrayBuffer로 문자열을 변환 할 수 없다.ArrayBuffer를 저장하는 방법은 무엇입니까?

put: function(key, value) { 
    //value = { prop1: <ArrayBuffer>, prop2: <ArrayBuffer> } 
    if (key === undefined || value === undefined || key === null || value === null) 
     return; 
    var prop1Str,prop2Str; 
    prop1Str = this.ab2str(value.prop1); 
    prop2Str = this.ab2str(value.prop2); 
    var chValue = {prop1:prop1Str, prop2:prop2Str}; 
    config.set(key,chValue); 
    console.log(value.prop1 === this.str2ab(config.get(key).prop1)); //===> FALSE 
}, 
ab2str: function(buf) { 
    return String.fromCharCode.apply(null, new Uint8Array(buf)); 
}, 
str2ab: function(str) { 
    var buf = new ArrayBuffer(str.length); 
    var bufView = new Uint16Array(buf); 
    for (var i=0, strLen=str.length; i < strLen; i++) { 
     bufView[i] = str.charCodeAt(i); 
    } 
    return buf; 
} 
+1

왜 JSON에 바이너리 데이터를 저장해야합니까? 서버에 HTTP 요청을 보냅니 까? 그렇다면 JSON 대신 multipart/form-data와 같이 바이너리 친화적 인 것이 더 좋습니다. – mscdex

+0

@mscdex JSON 형식 일 필요는 없습니다. 난 그냥 ArrayBuffer PC에 저장하고 싶습니다. –

+0

로컬 컴퓨터의 디스크에있는 파일에 저장 하시겠습니까? 아니면 LocalStorage (바이너리 데이터를 기본적으로 지원하지 않습니다)를 통해 * 브라우저 *에 저장 하시겠습니까? – mscdex

답변

2

는 JSON 형식으로 더 ArrayBuffers (단지 문자열, 숫자, 부울, null, 객체, 배열)이 없습니다 그래서 당신은 JSON의 ArrayBuffer을 저장하려면 다음 중 하나에 그것을 표현해야합니다 그 유형 (아마도 문자열 또는 숫자 배열).

그러면 JSON을 읽을 때 다시 ArrayBuffer로 변환해야합니다. 이전에 수행 한 변환을 되돌립니다.

+0

ArrayBuffer를 로컬 DB 또는 파일에 저장하기 만하면됩니다. 로컬 데이터베이스를 찾을 수 없으며 JSON에 데이터를 저장하지 마십시오. –

+0

ArrayBuffer를 문자열로 변환해야하는 것은 알고 있지만 문자열을 ArrayBuffer로 변환 할 수는 없습니다. –

0

디스크에 저장하려면 디스크에 내용을 쓰는 데 일반 노드 API를 사용할 수 있어야합니다. 예 :

require('fs').writeFileSync('/path/to/saved/file', Buffer.from(myArrayBuffer)); 
관련 문제