ljharb/qs

Parse results in multiple objects with the same key instead of one.

Open

#241 aperta il 20 dic 2017

Vedi su GitHub
 (0 commenti) (3 reazioni) (0 assegnatari)JavaScript (744 fork)batch import
bughelp wanted

Metriche repository

Star
 (8015 star)
Metriche merge PR
 (Merge medio 6g 22h) (2 PR mergiate in 30 g)

Descrizione

The following stringify/parse sequence works as expected:

dataB = {
  "incidents": [
    {
      "open": [
        "damaged",
        {
          "lost": [
            "red",
            "green"
          ]
        }
      ]
    }
  ]
};

queryStringB = QS.stringify(dataB, { arrayFormat: 'brackets' });
parsedB = QS.parse(queryStringB)

The result is {"incidents":[{"open":["damaged",{"lost":["red","green"]}]}]}, which matches dataB.

However, the following sequence does not result how I expect it to:

dataA = {
  "incidents": [
    "cold",
    {
      "open": [
        "damaged",
        {
          "lost": [
            "red",
            "green"
          ]
        }
      ]
    }
  ]
};

queryStringA = QS.stringify(dataA, { arrayFormat: 'brackets' });
parsedA = QS.parse(queryStringA)

This results in {"incidents":["cold",{"open":["damaged"]},{"open":[{"lost":["red","green"]}]}]}, which does not match dataA. Note that the only difference between dataA and dataB is that dataA has an extra element in the incidents array.

I saw some other parsing issues in the issue listing but none of them look quite like this.

Guida contributor