{"record":{"id":"0d7c4aa09d372483","repo":"usebruno/bruno","slug":"minifyjson-expects-a-string-or-object","errorCode":null,"errorMessage":"minifyJson expects a string or object","messagePattern":"minifyJson expects a string or object","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"packages/bruno-js/src/bru.js","lineNumber":122,"sourceCode":"        if (typeof json === 'object') {\n          try {\n            return JSON.stringify(json);\n          } catch (err) {\n            throw new Error(`Failed to minify: ${err?.message || err}`);\n          }\n        }\n\n        if (typeof json === 'string') {\n          const trimmed = json.trim();\n          if (trimmed === '') return trimmed;\n          try {\n            return JSON.stringify(JSON.parse(trimmed));\n          } catch (err) {\n            throw new Error(`Failed to minify: ${err?.message || err}`);\n          }\n        }\n\n        throw new TypeError('minifyJson expects a string or object');\n      },\n\n      minifyXml: (xml) => {\n        if (xml === null || xml === undefined) {\n          throw new Error('Failed to minify');\n        }\n\n        if (typeof xml === 'string') {\n          try {\n            return xmlFormat(xml, { collapseContent: false, indentation: '', lineSeparator: '' });\n          } catch (err) {\n            throw new Error(`Failed to minify: ${err?.message || err}`);\n          }\n        }\n\n        throw new TypeError('minifyXml expects a string');\n      }\n    };","sourceCodeStart":104,"sourceCodeEnd":140,"githubUrl":"https://github.com/usebruno/bruno/blob/9bdd81c7bdc57006e5f5ebffb79321a8d979f712/packages/bruno-js/src/bru.js#L104-L140","documentation":"Thrown as a TypeError by bru.utils.minifyJson when the input is neither a string nor an object — i.e., it is a number, boolean, symbol, or function. The function only accepts null/undefined (which throw 'Failed to minify'), objects, and strings; all other types hit the final TypeError at bru.js:122.","triggerScenarios":"Calling bru.utils.minifyJson(42), bru.utils.minifyJson(true), bru.utils.minifyJson(Symbol('x')), or bru.utils.minifyJson(() => {}). Because typeof for these returns 'number', 'boolean', 'symbol', or 'function', none of the preceding branches match.","commonSituations":"Passing a numeric value from a variable that was expected to be a JSON string or object (e.g., minifyJson(bru.getVar('count')) where count holds a number). Passing a boolean flag by mistake.","solutions":["Check the type of the input before calling minifyJson and convert it to an object or string first.","If you have a primitive, wrap it: minifyJson({ value: primitive }) or minifyJson(JSON.stringify(primitive)).","Ensure the variable or expression you are passing actually contains JSON data."],"exampleFix":"// before\nconst min = bru.utils.minifyJson(bru.getVar('itemCount')); // returns a number\n\n// after\nconst val = bru.getVar('itemCount');\nconst min = (typeof val === 'object' || typeof val === 'string')\n  ? bru.utils.minifyJson(val)\n  : bru.utils.minifyJson({ value: val });","handlingStrategy":"type-guard","validationCode":"function isMinifiableInput(val) {\n  return val !== null && val !== undefined && (typeof val === 'object' || typeof val === 'string');\n}\n// before calling: if (isMinifiableInput(val)) bru.utils.minifyJson(val);","typeGuard":"function isMinifiableJsonInput(val) {\n  return val !== null && val !== undefined && (typeof val === 'object' || typeof val === 'string');\n}","tryCatchPattern":null,"preventionTips":["Check typeof before calling minifyJson — only 'object' and 'string' are accepted.","Wrap primitive values in an object if you need to minify them.","Use bru.getVar() results carefully; they may return numbers or booleans."],"tags":["json","minify","type-error","validation"],"backgroundTag":null,"analyzedSha":"9bdd81c7bdc57006e5f5ebffb79321a8d979f712","analyzedAt":"2026-08-13T04:09:25.751Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}