@@ -45,6 +45,30 @@ export interface ParseOptions {
4545 //=> {foo: ['1', '2', '3']}
4646 ```
4747
48+ - `bracket-separator`: Parse arrays (that are explicitly marked with brackets) with elements separated by a custom character:
49+
50+ ```
51+ import queryString = require('query-string');
52+
53+ queryString.parse('foo[]', {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
54+ //=> {foo: []}
55+
56+ queryString.parse('foo[]=', {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
57+ //=> {foo: ['']}
58+
59+ queryString.parse('foo[]=1', {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
60+ //=> {foo: ['1']}
61+
62+ queryString.parse('foo[]=1|2|3', {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
63+ //=> {foo: ['1', '2', '3']}
64+
65+ queryString.parse('foo[]=1||3|||6', {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
66+ //=> {foo: ['1', '', 3, '', '', '6']}
67+
68+ queryString.parse('foo[]=1|2|3&bar=fluffy&baz[]=4', {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
69+ //=> {foo: ['1', '2', '3'], bar: 'fluffy', baz:['4']}
70+ ```
71+
4872 - `none`: Parse arrays with elements using duplicate keys:
4973
5074 ```
@@ -54,7 +78,7 @@ export interface ParseOptions {
5478 //=> {foo: ['1', '2', '3']}
5579 ```
5680 */
57- readonly arrayFormat ?: 'bracket' | 'index' | 'comma' | 'separator' | 'none' ;
81+ readonly arrayFormat ?: 'bracket' | 'index' | 'comma' | 'separator' | 'bracket-separator' | ' none';
5882
5983 /**
6084 The character used to separate array elements when using `{arrayFormat: 'separator'}`.
@@ -236,7 +260,7 @@ export interface StringifyOptions {
236260 // and `.parse('foo=1,,')` would return `{foo: [1, '', '']}`.
237261 ```
238262
239- - `separator`: Serialize arrays by separating elements with character:
263+ - `separator`: Serialize arrays by separating elements with character:
240264
241265 ```
242266 import queryString = require('query-string');
@@ -245,6 +269,33 @@ export interface StringifyOptions {
245269 //=> 'foo=1|2|3'
246270 ```
247271
272+ - `bracket-separator`: Serialize arrays by explicitly post-fixing array names with brackets and separating elements with a custom character:
273+
274+ ```
275+ import queryString = require('query-string');
276+
277+ queryString.stringify({foo: []}, {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
278+ //=> 'foo[]'
279+
280+ queryString.stringify({foo: ['']}, {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
281+ //=> 'foo[]='
282+
283+ queryString.stringify({foo: [1]}, {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
284+ //=> 'foo[]=1'
285+
286+ queryString.stringify({foo: [1, 2, 3]}, {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
287+ //=> 'foo[]=1|2|3'
288+
289+ queryString.stringify({foo: [1, '', 3, null, null, 6]}, {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
290+ //=> 'foo[]=1||3|||6'
291+
292+ queryString.stringify({foo: [1, '', 3, null, null, 6]}, {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|', skipNull: true});
293+ //=> 'foo[]=1||3|6'
294+
295+ queryString.stringify({foo: [1, 2, 3], bar: 'fluffy', baz: [4]}, {arrayFormat: 'bracket-separator', arrayFormatSeparator: '|'});
296+ //=> 'foo[]=1|2|3&bar=fluffy&baz[]=4'
297+ ```
298+
248299 - `none`: Serialize arrays by using duplicate keys:
249300
250301 ```
@@ -254,7 +305,7 @@ export interface StringifyOptions {
254305 //=> 'foo=1&foo=2&foo=3'
255306 ```
256307 */
257- readonly arrayFormat ?: 'bracket' | 'index' | 'comma' | 'separator' | 'none' ;
308+ readonly arrayFormat ?: 'bracket' | 'index' | 'comma' | 'separator' | 'bracket-separator' | ' none';
258309
259310 /**
260311 The character used to separate array elements when using `{arrayFormat: 'separator'}`.
0 commit comments