From b16b664afaaf9e4f4c9ff394610419eb8f12a882 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 1 Nov 2019 11:07:17 +0100 Subject: [PATCH] :zap: Make JSON.parse of data in MoveBinaryData optional --- .../nodes-base/nodes/MoveBinaryData.node.ts | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/MoveBinaryData.node.ts b/packages/nodes-base/nodes/MoveBinaryData.node.ts index 3fb9c936d8..baaa71e454 100644 --- a/packages/nodes-base/nodes/MoveBinaryData.node.ts +++ b/packages/nodes-base/nodes/MoveBinaryData.node.ts @@ -170,6 +170,23 @@ export class MoveBinaryData implements INodeType { default: false, description: 'If the source key should be kept. By default does it get deleted.', }, + { + displayName: 'JSON Parse', + name: 'jsonParse', + type: 'boolean', + displayOptions: { + show: { + '/mode': [ + 'binaryToJson', + ], + '/setAllData': [ + false + ], + }, + }, + default: false, + description: 'Run JSON parse on the data to get propery object data.', + }, { displayName: 'Mime Type', name: 'mimeType', @@ -235,15 +252,19 @@ export class MoveBinaryData implements INodeType { continue; } - const convertedValue = JSON.parse(new Buffer(value.data, 'base64').toString('ascii')); + let convertedValue = new Buffer(value.data, 'base64').toString('utf8'); if (setAllData === true) { // Set the full data - newItem.json = convertedValue; + newItem.json = JSON.parse(convertedValue); } else { // Does get added to existing data so copy it first newItem.json = JSON.parse(JSON.stringify(item.json)); + if (options.jsonParse) { + convertedValue = JSON.parse(convertedValue); + } + const destinationKey = this.getNodeParameter('destinationKey', itemIndex, '') as string; set(newItem.json, destinationKey, convertedValue); }