diff --git a/nodes/core/locales/en-US/messages.json b/nodes/core/locales/en-US/messages.json index 4223723c1..bc860bf6a 100644 --- a/nodes/core/locales/en-US/messages.json +++ b/nodes/core/locales/en-US/messages.json @@ -488,7 +488,8 @@ "json": { "errors": { "dropped-object": "Ignored non-object payload", - "dropped": "Ignored unsupported payload type" + "dropped": "Ignored unsupported payload type", + "dropped-error": "Failed to convert payload" } }, "xml": { diff --git a/nodes/core/parsers/70-JSON.js b/nodes/core/parsers/70-JSON.js index ec13bcff5..1bacb16ff 100644 --- a/nodes/core/parsers/70-JSON.js +++ b/nodes/core/parsers/70-JSON.js @@ -31,9 +31,14 @@ module.exports = function(RED) { catch(e) { node.error(e.message,msg); } } else if (typeof msg.payload === "object") { - if ((!Buffer.isBuffer(msg.payload)) && (!util.isArray(msg.payload))) { - msg.payload = JSON.stringify(msg.payload); - node.send(msg); + if (!Buffer.isBuffer(msg.payload)) { + try { + msg.payload = JSON.stringify(msg.payload); + node.send(msg); + } + catch(e) { + node.error(RED._("json.errors.dropped-error")); + } } else { node.warn(RED._("json.errors.dropped-object")); } }