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 (744 forks)batch import
bughelp wantedstringify

Repository metrics

Stars
 (8,015 stars)
PR merge metrics
 (Avg merge 6d 22h) (2 merged PRs in 30d)

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