- JSON with functions (methods)
Implementation of reviver and replacer functions for JSON parser to stringify, detect and parse methods as strings. Works in browser and node, no dependencies.
In a browser just load a script:
<script src="https://cdn.jsdelivr.net/npm/funjson/browser/funJSON.min.js"></script>
Using npm:
npm i --save funjson
const funJSON = require('funjson');
or
import { stringify, stringifyToScript, parse } from 'funjson';
var obj = {
a:{
a1:'a1',
fa:function(name){
//some comment here
return 'fa Hello ' + name;
}
},
b:{
b1:'b1'
},
f:(name) => {
//some comment here
return 'f Hello ' + name;
}
};
var str = funJSON.stringify(obj,null,2);// same syntax as for JSON.stringify
console.log('JSON:',str);
var obj2 = funJSON.parse(str);// same syntax as for JSON.parse
obj2.f('obj'); // --> 'f Hello obj'
obj2.a.fa('obj.a'); // --> 'fa Hello obj.a'
str = funJSON.stringifyToScript(obj,null,2);// generate JavaScript string.
//Useful to let user edit it in some code editor.
console.log('JS:',str);
eval('obj2 = '+str);
obj2.f("obj"); // --> 'f Hello obj'
obj2.a.fa("obj.a"); // --> 'fa Hello obj.a'
- parse(text[,reviver]):object - parses JSON string into object with methods.
- text - JSON string
- reviver(key, value) - optional function to customize deserialization.
- stringify(value[, replacer[, space]]):string - serializes object with methods into string.
- value - object to serialize
- replacer(key, value) - optional function or array with white list to use instead of default replacer.
- space - optional, defines how many spaces to use for pretty JSON indentation.
- stringifyToScript(value[, replacer[, space]]):string - serializes object with methods into string script. Functions serialized as is, not wrapped into quots.
- value - object to serialize
- replacer(key, value) - optional function to use instead of default replacer.
- space - optional, defines how many spaces to use for pretty JSON indentation.
Any feedback is welcome.