Javascript muss nicht assoziativen Arrays. Das Äquivalent ist ein "Hash", wie Sie es nennen, oder ein Objekt, das ist, was es tatsächlich ist. Das Beste, auf das Sie hoffen können, ist das: {"stuff": [{"name": "fred"}, {"name": "barney"}]}
Das Folgende ist ungetestet, sollte Ihnen aber zumindest in die richtige Richtung weisen.
var input = {"stuff": {"1": { "name": "fred"}}, {"2": { "name": "barney"}} },
output = {}, key, innerKey;
for key in input
{
output[key] = [];
for innerkey in input[key]
{
output[key].push(input[key][innerKey]);
}
}
Edit: Es scheint, dass das Eingabeobjekt nicht das Format hat ich erwartet habe (oder in der Tat, das Format ich gelesen, als ich es zum ersten Mal gelesen). Es Strom hat zwei Eigenschaften:
- „stuff“ gleich
{"1": {"name": "fred"}}
- Es gibt eine andere unverkeilten Artikel ist, der zu
{"2": {"name": "barney"}}
gleich ist (der Schlüssel sein könnte 0, ich bin nicht sicher, in diesem Punkt)
So hat input.stuff
nur einen Artikel, während input[0]
einen anderen Artikel hat. Wenn es wie folgt, würde es mehr Sinn machen:
var input = {
"stuff": {
"1": {"name": "fred"},
"2": {"name": "barney"}
}
}
Wenn dies der Fall wäre, mein obiger Code funktionieren würde. Mit der gegebenen Eingabe wird es nicht.
Was Sie haben (das erste Stück Code) ist nicht gültig JS: * "SyntaxError: Unerwartetes Token {" * Also, was hast du wirklich? –
Das unerwartete Token kommt wahrscheinlich von dem fehlenden Zitat nach "Barney" - sonst ist es gültig –
@Ryan Kinal: Ah du bist richtig mit dem Zitat. Aber auch damit ist es nicht gültig, der Fehler ist: * SyntaxError: Unexpected token: *. Wenn ich es so schreibe: '{" stuff ": {" 1 ": {" name ":" fred "}}, {" 2 ": {" name ":" barney "}}}' sollte es sein ziemlich klar, dass dies nicht gültig sein kann. Da fehlt der Schlüssel zwischen '}},' und '{" 2 ":'. –