Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
buffer: implement Buffer.prototype.toJSON()
Returns an Array-representation of the Buffer.
Closes #3905.
  • Loading branch information
TooTallNate committed Sep 9, 2012
1 parent 8e0c830 commit a4ef01d
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
19 changes: 19 additions & 0 deletions doc/api/buffer.markdown
Expand Up @@ -108,6 +108,25 @@ Decodes and returns a string from buffer data encoded with `encoding`
See `buffer.write()` example, above.


### buf.toJSON()

Returns a JSON-representation of the Buffer instance, which is identical to the
output for JSON Arrays. `JSON.stringify` implictly calls this function when
stringifying a Buffer instance.

Example:

var buf = new Buffer('test');
var json = JSON.stringify(buf);

console.log(json);
// '[116,101,115,116]'

var copy = new Buffer(JSON.parse(json));

console.log(copy);
// <Buffer 74 65 73 74>

### buf[index]

<!--type=property-->
Expand Down
5 changes: 5 additions & 0 deletions lib/buffer.js
Expand Up @@ -411,6 +411,11 @@ Buffer.prototype.write = function(string, offset, length, encoding) {
};


Buffer.prototype.toJSON = function() {
return Array.prototype.slice.call(this, 0);
};


// toString(encoding, start=0, end=buffer.length)
Buffer.prototype.toString = function(encoding, start, end) {
encoding = String(encoding || 'utf8').toLowerCase();
Expand Down
4 changes: 4 additions & 0 deletions test/simple/test-buffer.js
Expand Up @@ -748,3 +748,7 @@ Buffer(Buffer(0), 0, 0);
'new gnu gun' ].forEach(function(enc) {
assert.equal(Buffer.isEncoding(enc), false);
});


// GH-3905
assert.equal(JSON.stringify(Buffer('test')), '[116,101,115,116]');

0 comments on commit a4ef01d

Please sign in to comment.