Chuyển đổi một Đối tượng JSON thành Bộ đệm và Bộ đệm thành Đối tượng JSON trở lại


101

Tôi có một đối tượng JSON và tôi đang chuyển đổi nó thành a Buffervà thực hiện một số quy trình ở đây. Sau này tôi muốn chuyển đổi cùng một dữ liệu bộ đệm để chuyển đổi thành đối tượng JSON hợp lệ.

Tôi đang làm việc trên Node V6.9.1

Dưới đây là mã tôi đã thử nhưng tôi nhận được [object object]khi tôi chuyển đổi trở lại JSON và không thể mở đối tượng này.

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]

Vì vậy, tôi đã cố gắng in toàn bộ đối tượng bằng cách sử dụng cách kiểm tra

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

Nếu tôi cố đọc nó như một mảng

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

Tôi đã thử phân tích cú pháp nó cũng ném SyntaxError: Unexpected token o in JSON at position 2

Tôi cần xem nó như một đối tượng thực như tôi đã tạo (ý tôi là như đã khai báo ở trên).

Xin vui lòng giúp đỡ..


({"id":"value"}).toString() === '[object Object]' //true
Eric Hodonsky

new Buffer()không được dùng nữa. Xem tại đây: nodejs.org/api/buffer.html#buffer_new_buffer_array
Spencer

Câu trả lời:


181

Bạn cần xâu chuỗi json, không gọi toString

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

Và để chuyển đổi chuỗi thành json obj:

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

1
dont cầnnew
jpillora

2
Không có một giải pháp tốt hơn? Tôi không thích chuyển đổi số thành một chuỗi.
Benoit

1
Điều này sẽ không hoạt động nếu là có một lĩnh vực đệm trongobj
gilamran

7
thực ra, toString không cần thiết ở đây. groups.google.com/forum/#!topic/nodejs/hybuh7DbQkM
Dzenly vào

1
đối với tôi, nó hoạt động khi tôi loại bỏ JSON.stringify và đặt đối tượng trực tiếp vào bên trong các tham số, như sau: var buf = Buffer.from ({key: 'value', key: 'value', key: 'value' , key: 'value', key: 'value'});
Jorge Mauricio
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.