ljharb/qs

Stringify with "arrayFormat: comma" encodes objects inside arrays as "[object Object]"

Open

#378 opened on Aug 11, 2020

View on GitHub
 (30 comments) (6 reactions) (0 assignees)JavaScript (8,015 stars) (744 forks)batch import
bughelp wantedstringify

Description

Tested on version 6.9.4

Stringify with arrayFormat: comma encodes objects inside arrays as [object Object]

I took this code from the examples:

qs.stringify({ a: { b: { c: 'd', e: 'f' } } });
// 'a[b][c]=d&a[b][e]=f'

and added an array around the inside object

qs.stringify({ a: { b: [{ c: 'd', e: 'f' }] } }, { encode: false, arrayFormat: 'comma' })
// 'a[b]=[object Object]'

The inside data is lost this way.

I tried the allowDots setting too, but that didn't fix anything.

I'm not sure what the output should be like exactly, but this is unusable right now. In my project I did Array.map(p => ${p.ID}::${p.Value}), but that's very specific and I'm unsure if the :: is a good seperator.

Contributor guide