jsencode
An implementation for encoding typed JavaScript objects, similar to BEncode
Example
var JSEncoder = ;var Foo = ;var encoder = types:Foo; // or, encoder.registerTypes(Foo, Bar, ...); encoder; // returns "3:foo"encoder; // returns "{3:foo3:bar}"encoder; // returns "<3:Foo>" encoder; // returns "foo"encoder; // returns {foo: "bar"}encoder; // returns Foo() instance
Options
types
- specify a list of type constructors to register for deserializing Objects
includePrivateFields
- allows exclusion of fields that start with '_'
ignoreUnregisteredTypes
- ignore unregistered types, deserializing it as a null value instead
Encoding
Any
any := <string> | <number> | <boolean> | <dictionary> | <object> | <array> | <null>
Undefined
undefined := 'u'
Null
null := 'n'
String
string := <length> ':' <value>
length = any valid Number value that is an integer >= 0
value = any utf-8 encoded string value
Number
number := '(' <value> ')'
value = any valid Number value
Boolean
boolean := 't' | 'f'
Array
array := '[' <values> ']'
values := (<any>)*
Dictionary (Object with constructor Object)
dictionary := '{' <string-value-pairs> '}'
string-value-pairs := (string-value-pair)*
string-value-pair := <string><any>
Object (Object with registered constructor Function)
object := '<' <type> <string-value-pairs> '>'
type := <string>
string-value-pairs := (string-value-pair)*
string-value-pair := <string><any>