bjson

2020-02-14

bjson

Bind Json: Reactive way to read/write json files.

ABANDONED 4/22/2016Object.observe has been removed from future versions of V8. Therefore, this module is no longer being maintained.


Bind Json - "bjson"

Bind Json: Reactive way to read/write json files.

Note:Bind Json, called as "bjson", don't have ANY RELATIONS with Binary Json, also called as "bjson". These are two different projects with same abbreviation name. Sorry for this.

How it works

When you need to edit a json file, what you do?

Without bjsonWith bjson
Create json file if not exists
Read json file.Read json file (Will create if not exists)
Deserialize json file.
Edit parsed object.Edit object (Will reactively save in json file)
Serialize new object.
Write back into file.

Examples

Editing .json file without bjson

var fs = require('fs');
if(!fs.existsSync('settings.json')){
  fs.writeFileSync('settings.json', '{}');
}
var settingsJson = fs.readFileSync('settings.json');
var settings = JSON.parse(settingsJson);
settings.foo = 'bar';
var settingsJson = JSON.stringify(settings, null, 2);
fs.writeFileSync('settings.json', settingsJson);

Editing .json file with bjson

var bjson = require('bjson');
var settings = bjson('settings.json');
settings.foo = 'bar'; 

Getting started

Binding json

settings.json

{}

whatever.js

var bjson = require('bjson');
var settings = bjson('settings'); // will read or create settings.json
settings.prop = 'bar';

settings.json:

{
    "prop": "bar"
}

Watching changes with observe

You can watch changes with a instance of Object.observepassed as callback argument.

settings.json:

{
    "prop": "bar"
}

whatever.js

var bjson = require('bjson');
var settings = bjson('settings', function(observe){
    observe.on('change', function(changes){
        console.log('Path:', changes.path);
        console.log('Old Value:', changes.oldValue);
        console.log('New Value:', changes.value);
        console.log('-----');
    });
});

settings.prop = 'foo';
settings.otherprop = 'bar';

Log output:

Path: prop
Old Value: bar
New Value: foo
-----
Path: otherprop
Old Value: undefined
New Value: bar
-----

settings.json:

{
    "prop": "foo",
    "otherprop": "bar"
}

Observe events

var bjson = require('bjson');
var settings = bjson('settings', function(observe){
    observe.on('add', function(changes){});
    observe.on('update', function(changes){});
    observe.on('delete', function(changes){});
    observe.on('reconfigure', function(changes){});
    observe.on('change', function(changes){}); // fired when any of the above events are emitted
});

Observe events callback changes

path: full path to the property, including nesting name: name of the path type: name of the event object: object value: current value for the given path. same as object[name] oldValue: previous value of the property

Example:

var bjson = require('bjson');
var settings = bjson('settings', function(observe){
    observe.on('change', function(changes){
        console.log(changes);
    });
});

settings.foo = 'bar'

//log:
// { path: 'foo',
//   name: 'foo',
//   type: 'add',
//   object: { foo: 'bar' },
//   value: 'bar',
//   oldValue: undefined }

以上是 bjson 的使用教程帮助文档。


上一篇:cleverbot-node
下一篇:@shadow-node/lowdb
相关教程
关注微信

扫码加入 JavaScript 社区

相关文章
暂无相关文章

首次访问,需要验证
微信扫码,关注即可
(仅需验证一次)

欢迎加入 JavaScript 社区

号内回复关键字:

回到顶部