Skip to content

Parsing array that contains elements whose contain encoded pipe char (%7C instead of '|') #336

@ShimShum2021

Description

@ShimShum2021

Hello.
I am trying to parse an array of elements separated by the pipe character '|'.
The elements themselves might contain the pipe char, hence those should be encoded first (to %7C).
With array of 2 elements or above it works just fine.
However with array of one element it doesn't. My guess is that parse doesn't see explicitly pipe char, it decodes %7C into pipe char and creates array of 2 elements.
(A side note: this method with other special characters works just fine.)
please refer the following code example:

// begin of code
function TestQueryString(): void {
  const value1: string = encodeURIComponent('a|b'); 
  const twoElements = parse(`foo=${value1}|2`, {
    arrayFormat: 'separator',
    arrayFormatSeparator: '|',
  });
  console.log(twoElements); // Works as expected got: [ 'a|b', '2']

  const oneElement = parse(`bar=${value1}`, {
    arrayFormat: 'separator',
    arrayFormatSeparator: '|',
  });
  console.log(oneElement); // Here is the issue. Expected: 'a|b' but got [ 'a', 'b']
}
// end of code

Screenshot with '|'. Not expected behavior in one element case:
image

Screenshot with '%'. Expected behavior as another special characters:
image

Thanks,

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions