This plugin enable your server to process JSON5 payloads
MIT License
This plugin enable your server to process JSON5 payloads.
It adds a new application/json5
content type parser to Fastify and
decorate the reply
object with a sendJSON5()
utility.
npm install fastify-json5
Plugin version | Fastify version |
---|---|
^1.0.0 |
^4.0.0 |
const fastify = require('fastify')
const fastifyJson5 = require('fastify-json5')
const app = fastify()
app.register(fastifyJson5, {
reviver: (key, value) => value // optionally pass a reviver function
})
app.post('/', (req, reply) => {
console.log(req.body)
reply.sendJSON5(req.body, {
replacer, // optionally
space, // optionally
quote // optionally
})
})
app.inject({
method: 'POST',
url: '/',
headers: { 'content-type': 'application/json5' },
payload: `{
// comments
unquoted: 'and you can quote me on that',
singleQuotes: 'I can use "double quotes" here',
lineBreaks: "Look, Mom! \
No \\n's!",
hexadecimal: 0xdecaf,
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
positiveSign: +1,
negativeSign: -9,
trailingComma: 'in objects', andIn: ['arrays',],
"backwardsCompatible": "with JSON",
}`
})
This plugin uses the json5
under the hood.
So you can provide the same options of the json5
module.
When you register the plugin you can pass the JSON.parse
options:
reviver
When you call the reply.sendJSON5()
you can pass the JSON.stringify
:
replacer
space
quote
By default, the json5
module behaves like the JSON.parse
and JSON.stringify
methods.
So it parse and add to the prototype the __proto__
property.
This module implements a security check to avoid the __proto__
property to be added to the prototype. In this case the plugin will throw an http 400 error.
Copyright Manuel Spigolon, Licensed under MIT.