Skip to content

Keeping nesting with custom decoder ? #454

@Altho

Description

@Altho

Hello,

I am using parse() on a node server (vanilla node http server, not express) to parse a long, not known in advance, querrystring to JSON. I also need to convert the values to the correct type. I understand that qs doesn't do type coercion by design. Here is my issue

If i just use parse without options every value is a string but my nested values are correctly displayed. But if I use a custom decoder to convert the types :

const data = qs.parse(body, {
        decoder(value) {
          if (/^(\d+|\d*\.\d+)$/.test(value)) {
            return parseFloat(value);
          }

          const keywords: Record<string, any> = {
            true: true,
            false: false,
            null: null,
            undefined: undefined,
          };

          if (value in keywords) {
            return keywords[value];
          }

          return value;
        },
      });

then I lost nesting. How do I manage to keep the nesting along type coercion ?

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions