2016-12-26 10 views
0

ArrayBufferをjsonファイルに保存する方法は?私はこれに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形式である必要はありません。私はちょうどPCにArrayBufferを保存したい。 –

+0

ローカルコンピュータのディスク上のファイルに保存するか、LocalStorage(バイナリデータをネイティブにサポートしていない)のように* browser *に保存することを意味しますか? – 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)); 
関連する問題