2013-03-14 3 views
3

Я новичок в lua. Мне нужно преобразовать следующую строку в таблицу lua. Как я могу это сделать?Преобразование строки в таблицу в lua

str = "{a=1, b=2, c={d=3,e=4} }" 

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

print(str['a']) -- Output : 1 
print(str['c']['d']) -- Output : 3 

ответ

9

Вы можете просто добавить str = в начало строки и пусть нагрузки интерпретатора эта строка как кусок для вас. Обратите внимание: loadstring не запускает кусок, но возвращает функцию. Таким образом, вы добавляете () вызывать эту функцию сразу и на самом деле выполнить код:

loadstring("str = "..str)() 

Это будет делать то же самое:

str = loadstring("return "..str)() 

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

+0

Спасибо! Работает хорошо.. – akashdeep