Доступ к вложенным свойствам Javascript JSON через переменные - PullRequest
0 голосов
/ 24 марта 2011

Скажем, у меня есть файл конфигурации, в котором у меня есть пути к свойствам JSON. Мой JSON выглядит так:

var test = { test: { test2: { test3: 1 } } }

и у меня есть строка str = "test.test2.test3"

Я знаю, что могу получить доступ к первому уровню, например так: var foo = "test", test[foo]

Но test["test.test2.test3"] не работает. С другой стороны, test["test"]["test2"]["test3"] работает, но это не один слой, если у меня есть более сложные объекты (некоторые могут иметь 5 уровней, некоторые могут быть 3 и т. Д.)

Есть ли способ напрямую получить доступ к этому свойству, вместо разделения на точку и циклического прохождения?

1 Ответ

4 голосов
/ 24 марта 2011
with(test) eval(str);

У кого-нибудь взорвалась голова?

Это либо то, либо

eval('test.' + str);

Выберите из корзины плохой практики.

Хотя для первого примераесли вы на самом деле хотите получить значение, которое вы хотите сделать, это

var value;
with(test) value = eval(str);

Но этот тип умаляет чистоту этого шедевра плохой практики.

...