dumbson
JavaScript objects to query string serialization format.
It uses plain JSON.stringify, and then swaps '[]{}:,"' chars, which are escaped in query, with corresponding '()-!*.~', which are not escaped. This is done to reduce length of URL, and improve readability:
json: "name":"John""value":15dumbson: -~name~*~John~~value~*15!: %7B%22name%22:%22John%22%22value%22:15%7D: -~name~*~John~~value~*15!
This looks retarded, however:
- it gives better URLs, than just putting plain or base64 JSON into query string
- it works as reliable as plain JSON
serialize(parse(dumbson)) = dumbson
, which hard to guarantee for more complex methods
Usage
npm i dumbson -s
; // "-~filter~*-~type~*(1.4.3).~color~*~red~.~size~*null!.~sort~*~name~.~page~*0.~mode~*null!" // { filter: { type: [1,4,3], color: 'red', size: null }, sort: 'name', page: 0, mode: null } // stringifyQuery and parseQueryString utilize "&a=b&c=d" pattern for 1-st level, which looks a bit better. // "filter=-~type~*(1.4.3).~color~*~red~.~size~*null!&sort=~name~&page=0&mode=null" // { filter: { type: [1,4,3], color: 'red', size: null }, sort: 'name', page: 0, mode: null }
Using with react-router
; const routerHistory = dumbson;