diff --git a/.gitignore b/.gitignore index 3c3629e64..34977ee7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules +.idea \ No newline at end of file diff --git a/request.js b/request.js index 8365ab62a..ee8b411b7 100644 --- a/request.js +++ b/request.js @@ -1481,7 +1481,7 @@ Request.prototype.json = function (val) { self._json = true if (typeof val === 'boolean') { - if (typeof self.body === 'object') { + if (self.body !== undefined) { self.body = safeStringify(self.body) if (!self.hasHeader('content-type')) { self.setHeader('content-type', 'application/json') diff --git a/tests/test-json-request.js b/tests/test-json-request.js new file mode 100644 index 000000000..bc4ef2f79 --- /dev/null +++ b/tests/test-json-request.js @@ -0,0 +1,33 @@ +'use strict' + +var server = require('./server') + , stream = require('stream') + , request = require('../index') + , tape = require('tape') + +var s = server.createServer() + +tape('setup', function(t) { + s.listen(s.port, function() { + t.end() + }) +}) + +tape('test testPutBoolean', function(t) { + s.on('/testPutBoolean', server.createPostValidator('true', 'application/json')) + var opts = { + method: 'PUT', + uri: s.url + '/testPutBoolean', + json: true, + body: true + } + request(opts, function (err, resp, body) { + t.equal(err, null) + t.end() + }) +}) + +tape('cleanup', function(t) { + s.close() + t.end() +})