diff --git a/src/execute/oas3/style-serializer.js b/src/execute/oas3/style-serializer.js index a405ab61a..62611364d 100644 --- a/src/execute/oas3/style-serializer.js +++ b/src/execute/oas3/style-serializer.js @@ -7,7 +7,7 @@ const isRrc3986Unreserved = (char) => { return (/^[a-z0-9\-._~]+$/i).test(char) } -export function encodeDisallowedCharacters(str, {escape} = {}) { +export function encodeDisallowedCharacters(str, {escape} = {}, parse) { if (typeof str === 'number') { str = str.toString() } @@ -19,6 +19,10 @@ export function encodeDisallowedCharacters(str, {escape} = {}) { return str } + if (parse) { + return JSON.parse(str) + } + return stringToCharArray(str).map((char) => { if (isRrc3986Unreserved(char)) { return char @@ -166,6 +170,6 @@ function encodePrimitive({key, value, style, escape}) { } if (style === 'deepObject') { - return valueEncoder(value) + return valueEncoder(value, {}, true) } } diff --git a/test/oas3/execute/style-explode/query.js b/test/oas3/execute/style-explode/query.js index a65dad862..37b8dbc6f 100644 --- a/test/oas3/execute/style-explode/query.js +++ b/test/oas3/execute/style-explode/query.js @@ -1122,7 +1122,7 @@ describe('OAS 3.0 - buildRequest w/ `style` & `explode` - query parameters', fun name: 'id', in: 'query', style: 'deepObject', - explode: false + explode: true } ] }