node-qs-serialization
v1.1.0
Published
Serialization and deserialization of an URL its QueryString based on and compatible with jQuery's $.param method
Maintainers
Readme
node-qs-serialization
Serialization and deserialization of Javascript objects for use in the querystring part of an url. Slightly modified from jQuery's $.param function $.param method and Ben Alman's jquery-bbq with license info for both included.
deparam delegates parsing to qs and adds an ISO-8859 percent-encoding fallback, type coercion, and per-parameter depth and prototype-key rejection on top. param is the original pure-JS jQuery-traditional serializer.
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);
Install
npm install node-qs-serialization(Or from source: npm install github:edwardsmit/node-qs-serialization.)
Usage
var param = require('node-qs-serialization').param;
var deparam = require('node-qs-serialization').deparam;
var paramsObj = deparam(querystring);
var querystring = param(paramsObj);deparam(querystring, coerce = true, maxDepth = 5)
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.
Security
See SECURITY.md for disclosure policy.
License
MIT — see LICENSE for full text including the attributions to jQuery and jquery-bbq from which param and deparam are adapted.
