JSONオブジェクトをバッファに変換し、バッファをJSONオブジェクトに変換します


101

JSONオブジェクトがあり、それをに変換して、Bufferここでいくつかのプロセスを実行しています。後で、同じバッファデータを変換して有効なJSONオブジェクトに変換します。

私はノードV6.9.1に取り組んでいます

以下は私が試したコードですが[object object]、JSONに変換し直してこのオブジェクトを開くことができないときに取得しています。

var obj = {
   key:'value',
   key:'value',
   key:'value',
   key:'value',
   key:'value'
}

var buf = new Buffer.from(obj.toString());

console.log('Real Buffer ' + buf);  //This prints --> Real Buffer <Buffer 5b 6f 62 6a 65 63 74>

var temp = buf.toString();

console.log('Buffer to String ' + buf);  //This prints --> Buffer to String [object Object]

だから私は検査方法を使用してオブジェクト全体を印刷しようとしました

console.log('Full temp ' + require('util').inspect(buf, { depth: null }));  //This prints --> '[object object]' [not printing the obj like declared above]

配列のように読み取ろうとすると

 console.log(buf[0]);  // This prints --> [ 

スローも解析してみました SyntaxError: Unexpected token o in JSON at position 2

作成したような実際のオブジェクトとして表示する必要があります(上記で宣言したようなものです)。

助けてください..


({"id":"value"}).toString() === '[object Object]' //true
エリックホドンスキー

new Buffer()廃止予定です。こちらを参照してください:nodejs.org/api/buffer.html#buffer_new_buffer_array
Spencer

回答:


181

呼び出すのではなく、jsonを文字列化する必要があります toString

var buf = Buffer.from(JSON.stringify(obj));

そして、文字列をjson objに変換するために:

var temp = JSON.parse(buf.toString());

1
必要ありnew
ません

2
より良い解決策はありませんか?数値を文字列に変換したくない。
ブノワ

1
別のバッファフィールドが存在する場合、これは機能しませんobj
gilamran

7
実際には、ここではtoStringは必要ありません。groups.google.com/forum/#!topic/nodejs/hybuh7DbQkM
Dzenly

1
私にとっては、JSON.stringifyを取り除いてオブジェクトをパラメーターの中に直接入れたときに機能しました:var buf = Buffer.from({key: 'value'、key: 'value'、key: 'value' 、key: 'value'、key: 'value'});
ホルヘマウリシオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.