Package Exports
- buffer-json
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (buffer-json) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
buffer-json
npm install buffer-json
const BJSON = require('buffer-json')
const str = BJSON.stringify({ buf: Buffer.from('hello') })
// => '{"buf":{"type":"Buffer","data":"base64:aGVsbG8="}}'
BJSON.parse(str)
// => { buf: <Buffer 68 65 6c 6c 6f> }
The Buffer
class in Node.js is used to represent binary data. JSON does not specify a way to encode binary data, so the Node.js implementation of JSON.stringify
represents buffers as an object of shape { type: "Buffer", data: [<bytes as numbers>] }
. Unfortunately, JSON.parse
does not turn this structure back into a Buffer
object:
$ node
> JSON.parse(JSON.stringify({ buf: Buffer.from('hello world') }))
{ buf:
{ type: 'Buffer',
data: [ 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100 ] } }
JSON.stringify
and JSON.parse
accept arguments called replacer
and reviver
respectively which allow customizing the parsing/encoding behavior. This module provides a replacer which encodes Buffer data as a base64-encoded string, and a reviver which turns JSON objects which contain buffer-like data (either as arrays of numbers or strings) into Buffer
instances. All other types of values are parsed/encoded as normal.
API
stringify(value[, space])
Convenience wrapper for JSON.stringify
with the replacer
described below.
parse(text)
Convenience wrapper for JSON.parse
with the reviver
described below.
replacer(key, value)
A replacer
implementation which turns every value that is a Buffer
instance into an object of shape { type: 'Buffer', data: 'base64:<base64-encoded buffer content>' }
. Empty buffers are encoded as { type: 'Buffer', data: '' }
.
reviver(key, value)
A reviver
implementation which turns every object of shape { type: 'Buffer', data: <array of numbers or string> }
into a Buffer
instance.
Related modules
buffer-json-encoding
: anabstract-encoding
compatible JSON encoder/decoder which uses this module.
License
MIT