buffer-json
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/buffer-json package

    2.0.0 • Public • Published

    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

    Install

    npm i buffer-json

    DownloadsWeekly Downloads

    1,516,422

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    4.93 kB

    Total Files

    4

    Last publish

    Collaborators

    • jprichardson