buffer-json
JSON.stringify & JSON.parse which can encode/decode buffers.
Last updated 6 years ago by jprichardson .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ gnpm install buffer-json 
SYNC missed versions from official npm registry.

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

License

MIT

Current Tags

  • 2.0.0                                ...           latest (6 years ago)

2 Versions

  • 2.0.0                                ...           6 years ago
  • 1.0.0                                ...           9 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (0)
None
Dev Dependencies (2)
Dependents (2)

Copyright 2013 - present © cnpmjs.org | Home |