2015-07-25 2 views
1

Предположим, что у меня есть это в объекте JavaScript, взятом из запроса Firebase.JSON - JavaScript получает вложенное значение

{ 
    "player": { 
     "player:616320": { 
      "skills": { 
       "main": { 
        "attack": 1, 
        "defence": 1 
       } 
      }, 
      "uid": "player:616320", 
      "username": "test1", 
      "x": 1, 
      "y": 1 
     } 
    } 
} 

var data = snap.val(); 

я могу сделать, чтобы получить data.usernametest1 ... но как бы я идти дальше? Я попытался найти JSON гнездование и ... это было сложно.

И snap.val() - JSONobject выше. Как я получаю attack от main?

+0

Ну если 'data' является весь объект, то' data.username' не будет работать - вы должны были бы 'data.player [«игрок: 616320»]. username' – Pointy

+0

Если 'data.username' дает вам' test1', то 'data', вероятно,' player: 616320' в дереве. Чтобы получить значение 'attack', я бы подумал, что вы можете использовать' data.skills.main.attack'. –

+0

Если 'data.username' работает, то остальное имеет тот же формат. Как в 'data.skills.main.attack', чтобы получить значение' 1'. В основном просто добавьте '.' и любые ключи, которые вы хотите или хотите вставить. – GillesC

ответ

4

В вашем случае это будет:

obj.player["player:616320"].skills.main.attack 

Где obj находится объект JSON.

Это дерево, где после . ребенок такой: parent.child. Когда есть значение, которое невозможно представить нормально, вам нужно сделать parent["some-Value"].

В вашем случае кажется, что playerData - это фактически значение obj.player["player:616320"], а не весь объект JSON. В этом случае то же самое понятие относится:

playerData.skills.main.attack 
+1

'parent [" some-value "]' был бы лучшим примером :) – GillesC

+1

@gillesc Да, это было бы, спасибо :) –

+0

Я получил это, используя это исходя из вашего ответа: 'playerData.skills ['main'] ['attack'] ' –

Смежные вопросы