2017-04-07 134 views
0

我試圖將現有的JSON結構升級到更復雜的結構。製作JSON字符串的麻煩

最初的想法是一堆X的動物,每一個具有一堆caracteristics的:

  • 動物
    • 動物1
      • 爪:4只
      • 眼睛:2
    • 動物2
      • 爪:0
      • 眼睛:6

的JSON是這樣的:

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

因此,作爲你可以看到,我沒有列出每個動物的名稱,動物的特徵是這個數組的一個元素。我可以像動物一樣在循環中使用它們[x]。爪


現在我想添加一個巢每一個動物,如:

  • 動物
    • 動物1
        • 眼睛:2
        • 耳朵:2
        • 爪:4
        • 尾巴:1
        • 腿:4
    • 動物2
        • 眼睛:6
        • 耳朵:0
        • 爪:0
        • 尾巴:0
        • 腿:8

,但我沒能做到這一點不點名每個動物對象(名稱相同的「動物」),並使用數組的什麼動物:

{ 
    "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"} 
      } 
     ]} 
    ] 
} 

我發現它蘇茨基因爲:

1)我並不需要爲每個動物的結構(尤其是因爲它們都被命名爲「動物」),因爲我想對他們重複像之前數組名稱;

2),因爲我知道電話號碼和元素的名字,我不需要爲的數組。

我希望我可以使用類似的東西,但它不工作:

{ 
    "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"} 
      } 
     } 
    ] 
} 

那麼,有沒有使用數組和名稱嵌套的方式嗎?

+2

'{ 「動物」:[{ 「頭」:{ 「眼睛」: 「2」, 「耳朵」:「2」,「身體」:{「爪」:「4」,「尾巴」:「1」,「腿」:「4」}},{「頭」:{「eyes」 「6」,「ear」:「0」},「body」:{「claws」:「0」,「tails」:「0」,「legs」:「8」}}]}'? – Larme

回答

1

當然有!哈希是鍵值對,這就是爲什麼你需要一把鑰匙,當您使用{}。陣列是一個簡單的集合。所以{}不能是一個簡單的收集(這就是爲什麼你必須使用,而後者沒有工作,因爲{}在你的例子是一個簡單的集合,看看:{ {}, {}, {} ... },所以在這種情況下,必須是[ {}, {}, {} ... ]),但你可以把它簡單,只是不鳥巢很多次了:

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

感謝你和Larme。我甚至沒有意識到* head *和* body *是鍵,以下彎曲的大括號元素是值... JSON是我最大的敵人。謝了哥們。 – Destal

+0

@SimonDéchamps沒問題! –