Serialization and deserialization of Javascript objects for use in the querystring part of an url.
param is adapted from jQuery's $.param — the original pure-JS jQuery-traditional serializer, unchanged since 2014.
deparam is an original shim over qs whose behavioral contract was originally derived from Ben Alman's jquery-bbq — same coercion conventions, same test fixtures, same ISO-8859 percent-encoding fallback. The code was rewritten in v1.1.0; the contract was preserved.
param serializes any Javascript object to a valid querystring. deparam deserializes a provided querystring.
var param = require('node-qs-serialization').param;
var deparam = require('node-qs-serialization').deparam;
var paramStr =
'a[]=4&a[]=5&a[]=6&b[x][]=7&b[y]=8&b[z][]=9&b[z][]=0&b[z][]=true&b[z][]=false&b[z][]=undefined&b[z][]=&c=1';
var paramsObj = {
a: [4, 5, 6],
b: {
x: [7],
y: 8,
z: [9, 0, true, false, undefined, '']
},
c: 1
};
param(paramsObj).should.equal(paramStr);
deparam(paramStr).should.deep.equal(paramsObj);npm install node-qs-serialization
(Or from source: npm install github:edwardsmit/node-qs-serialization.)
var param = require('node-qs-serialization').param;
var deparam = require('node-qs-serialization').deparam;
var paramsObj = deparam(querystring);
var querystring = param(paramsObj);
coerce— whentrue(default), strings"true","false","null","undefined"and numeric values are converted to their JS equivalents.maxDepth— caps nested bracket depth (default5). Parameters whose key path exceeds this depth are silently dropped. Keys equal to__proto__,constructor, orprototypeare always rejected to prevent prototype pollution.
See SECURITY.md for disclosure policy.
MIT — see LICENSE for full text including the attributions to jQuery (from which param is adapted) and jquery-bbq (whose behavioral conventions deparam preserves).