Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

jston

1.0.4 • Public • Published

JSTON

JSTON (JavaScript Typed Object Notation) functions for essentially representing any type of object as JSON.

Simple Examples

const JSTON = require('jston');
 
console.log(JSTON.stringify(NaN));
// -> "{\"Number\":\"NaN\"}"
 
console.log(JSTON.stringify(Infinity));
// -> "{\"Number\":\"Infinity\"}"
 
console.log(JSTON.stringify(-0));
// -> "{\"Number\":\"-0\"}"
 
console.log(JSTON.stringify(NaN));
// -> "{\"Number\":\"NaN\"}"
 
console.log(JSTON.parse("[{\"Number\":\"NaN\"},5]"));
// -> [NaN,5]

Custom Type Example

const JSTON = require('jston');
 
function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}
Person.prototype = {
  constructor: Person,
  toString: function() {
    return `Person(${this.firstName}${this.lastName})`;
  }
};
 
let john = new Person('John', 'Smith');
let jane = new Person('Jane', 'Smith');
 
let strJSTON = JSTON.stringify([john, jane], 2, function(value, typeName) {
  if (value instanceof Person) {
    return {
      "type": "Person",
      value: { firstName: value.firstName, lastName: value.lastName }
    };
  }
});
console.log(strJSTON);
// // Results in the following string representation:
// [
//   {
//     "Person": {
//       "firstName": "John",
//       "lastName": "Smith"
//     }
//   },
//   {
//     "Person": {
//       "firstName": "Jane",
//       "lastName": "Smith"
//     }
//   }
// ]
 
let arr = JSTON.parse(strJSTON, function(value, typeName) {
  if (typeName === 'Person') {
    return {
      value: new Person(value.firstName, value.lastName)
    };
  }
});
console.log(arr.join(' & '));
// -> "Person(John, Doe) & Person(Jane Doe)"

Resources

https://www.npmjs.com/package/jston

Install

npm i jston

DownloadsWeekly Downloads

1

Version

1.0.4

License

MIT

Unpacked Size

7.51 kB

Total Files

3

Last publish

Collaborators

  • avatar