The way to cast data to types specified with JSON schema.
source (object)
- Source object to be casted.schema (object)
- JSON schema containing types definitions.options (object)
allowNaN
— Whether or not to returnNaN
for non-parseable numbers. The default isfalse
which will castNaN
to0
.
May be used for query params casting:
const qs = require('qs');
const castWithSchema = require('cast-with-schema');
const schema = {
type: "object",
properties: {
param1: {
type: 'string',
},
param2: {
type: 'integer',
},
param3: {
type: 'number',
},
param4: {
type: 'boolean',
},
}
};
const query = 'param1=value¶m2=777¶m3=7.77¶m4=false';
const parsed = qs.parse(query);
const casted = castWithSchema(query, schema);
/*
`casted` is now:
{
param1: 'value',
param2: 777,
param3: 7.77,
param4: false,
}
*/
Supports null
if schema is either:
type: ['..', 'null']
or
anyOf: [
{ type: '..' },
{ type: 'null' }
]
Check out tinsypec for more smart JSON schema use cases.