2017-04-07 4 views
0

Ich versuche, eine vorhandene JSON-Struktur auf eine komplexere aufzurüsten.Problem beim Erstellen einer JSON-Zeichenfolge

Die ursprüngliche Idee ist ein Bündel von X Tiere, die jeweils ein Bündel von caracteristics aufweist:

  • Tiere
    • animal 1
      • Krallen: 4
      • Augen : 2
    • Tier 2
      • Krallen: 0
      • Augen: 6
    • usw.

Die JSON ist wie folgt:

{ 
    "animals":[ 
     {"claws":"4", "eyes":"2"}, 
     {"claws":"0", "eyes":"6"}, 
     etc. 
    ] 
} 

So wie du kannst sehen , Ich nenne nicht jedes Tierobjekt, die Eigenschaften eines Tieres sind ein Element des Arrays. Ich kann sie in einer Schleife wie Tiere [x] verwenden.Klauen


Jetzt möchte ich ein Nest für jedes Tier zu verwenden, wie:

  • Tiere
    • Tier 1
      • Kopf
        • Augen: 2
        • Ohren: 2
      • Körper
        • Krallen: 4
        • tails: 1
        • Beine: 4
    • Tier 2
      • Kopf
        • Augen: 6
        • Ohren: 0
      • Körper
        • Krallen: 0
        • tails: 0
        • Beine: 8

Aber ich schaffe nicht, es zu tun, ohne jedes Tier Objekt zu benennen (mit dem gleichen Namen „Tier“) und Verwendung von Arrays für das, was in einem Tier ist:

{ 
    "animals":[ 
     {"animal":[ 
      {"head": 
       {"eyes":"2", "ears":"2"} 
      }, 
      {"body": 
       {"claws":"4", "tails":"1", "legs":"4"} 
      } 
     ]}, 
     {"animal":[ 
      {"head": 
       {"eyes":"6", "ears":"0"} 
      }, 
      {"body": 
       {"claws":"0", "tails":"0", "legs":"8"} 
      } 
     ]} 
    ] 
} 

ich es finden sucky weil:

1) Ich brauche keinen Namen für jede Tierstruktur (besonders da sie alle "Tier" genannt werden), da ich sie wie ein Array wie vorher iterieren möchte;

2) Ich brauche nicht einen Array für Kopf und Körper da ich die Anzahl und die Namen der Elemente kennen.

Ich wünschte, ich so etwas nutzen könnte, aber es funktioniert nicht:

{ 
    "animals":[ 
     { 
      {"head": 
       {"eyes":"2", "ears":"2"} 
      }, 
      {"body": 
       {"claws":"4", "tails":"1", "legs":"4"} 
      } 
     }, 
     { 
      {"head": 
       {"eyes":"6", "ears":"0"} 
      }, 
      {"body": 
       {"claws":"0", "tails":"0", "legs":"8"} 
      } 
     } 
    ] 
} 

So ist es eine Möglichkeit, ohne von Verschachtelung Arrays und Namen?

+2

'{ "Tiere": [{ "Kopf": { "Augen": "2", "Ohren": "2"}, "Körper": {"Krallen": "4", "Schwänze": "1", "Beine": "4"}}, {"Kopf": {"Augen": "6", "Ohren": "0"}, "Körper": {"Krallen": "0", "Schwänze": "0", "Beine": "8"}}]} '? – Larme

Antwort

1

Sicher gibt es! Hash ist ein Schlüssel-Wert Paar, und deshalb brauchen Sie einen Schlüssel, wenn Sie {} verwenden.Array ist eine einfache Sammlung. So {} keine einfache Sammlung sein kann (das ist, warum Sie Schlüssel zu verwenden, hatten, und die letztere hat nicht funktioniert, weil {} in Ihrem Beispiel eine einfache Sammlung war, aussehen: { {}, {}, {} ... }, so in diesem Fall ist es hatte [ {}, {}, {} ... ]) zu sein, aber man kann es einfacher machen, einfach nicht nisten es so viele Male:

{ 
    "animals":[ 
     { 
      "head": { 
       "eyes":"2", 
       "ears":"2" 
      }, 
      "body": { 
       "claws":"4", 
       "tails":"1", 
       "legs":"4" 
      } 
     }, 
     # ... 
    ] 
} 
+0

Dank Ihnen und Larme. Ich wusste nicht einmal, dass * Kopf * und * Körper * Schlüssel waren und die folgenden kurvigen Klammern Elemente waren Werte ... JSON ist mein schlimmster Feind. Danke Kumpel. – Destal

+0

@ SimonDéchamps kein Problem! –

Verwandte Themen