Ну, это не похоже на действительный JSON для меня. Вы не можете определить JSON таким образом. Вы либо определяете ходы как хеш:
moves: {"val":"key"}
Вы получаете доступ к нему следующим образом: move.val или move ["val"]
Или вы определяете ходы как массив хэшей:
moves: [{"val":"key"}, ...]
Доступ к нему осуществляется следующим образом: ходы [0] .val или ходы [0] ["val"] .
Если вам нужен такой вложенный хеш, вам нужно определить его следующим образом:
moves: {"val": {"key":"value"}}
И доступ к нему, как движется ["val"] ["ключ"] или движется.val.key