/jsonlize

Serialize nested objects

Primary LanguageJavaScriptMIT LicenseMIT

Serialize

Serialize Objects, Functions, primitive types, builtin objects, nested objects, class instances, methods, setters and getters, cross and self references objects, Regular Expressions (including status), Maps, Sets, Errors, binary arrays

Setup

1. Install

npm install jsonlize

Usage

1. Serialize and deserialize an class instance

const { serialize, deserialize } = require('jsonlize')
class A {
  constructor(n) {
    this.n = n
  }
  inc(n) {
    this.n += n
  }
}
const a = new A(10)

const json = serialize(a)

const aa = deserialize(json)
aa.inc(5)

2. Serialize and deserialize nested objects

const { serialize, deserialize } = require('jsonlize')
class A {
  constructor(n) {
    this.n = n
  }
  inc(n) {
    this.n += n
  }
}

class C {
  constructor(n) {
    this._a = new A(n)
  }
  set a (value) {
    this._a = value
  }
  get a () {
    return this._a
  }
}

const c = new C(10)

const json = serialize(c)

const cc = deserialize(json)
cc.a.inc(5)

Limitations

1. Functions defined in a scope

It won't work if functions access to scoped variables

let obj = {/*...*/}
const f = function () { return obj.prop }
const json = serialize(f)

2. Class Private members

Instances of classes with private members cannot be serialized without errors

class A {
  #x = 'I am private'
}
const json = serialize(new A())