Как я могу проанализировать LuaTable на C#?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу проанализировать LuaTable на C#?

Сообщение Anonymous »

Я совершенно не понимаю синтаксиса анализа LuaTable. У меня есть таблица следующей структуры:

Код: Выделить всё

mission =
{
["coalition"] =
{
["blue"] =
{
["bullseye"] =
{
["y"] = -378451.53125,
["x"] = -178644.117188,
}, -- end of ["bullseye"]
["country"] =
{
[1] =
{
["plane"] =
{
["group"] =
{
[1] =
{
["hiddenOnPlanner"] = false,
["tasks"] = {},
["radioSet"] = false,
["task"] = "AFAC",
["uncontrolled"] = false,
["hiddenOnMFD"] = false,
["taskSelected"] = true,
["route"] =
{..............
и я делаю следующее в своем приложении Winforms C# (просто кнопка, запускающая этот код для тестирования):

Код: Выделить всё

private void button29_Click_1(object sender, EventArgs e)
{
Lua lua = new Lua();
string s = File.ReadAllText("C:\\Users\\username\\Desktop\\mission");
lua.DoString(s);
var res = lua["mission.coalition.blue.country"];
var bluePlanes = lua["mission.coalition.blue.country.1"];

LuaTable tb = (LuaTable)res;
Dictionary dict = lua.GetTableDict(tb);
Console.WriteLine("First chunk of code:");
foreach (KeyValuePair de in dict)
{
Console.WriteLine("{0} {1}", de.Key.ToString(), de.Value.ToString());
}

tb = (LuaTable)bluePlanes ;
dict = lua.GetTableDict(tb);
Console.WriteLine("Second chunk of code:");
foreach (KeyValuePair de in dict)
{
Console.WriteLine("{0} {1}", de.Key.ToString(), de.Value.ToString());
}
}
Первый фрагмент работает, но как только я натыкаюсь на один из элементов в квадратных скобках без кавычек (например, [1]), возвращается значение null. Я проверил, что добавление кавычек вручную решает эту проблему, но в представлении «Наблюдение» я вижу, что есть ключи и значения, но я не могу их индексировать. Есть предложения?
Это вывод консоли:

Код: Выделить всё

First chunk of code:
1 table
Exception thrown: 'System.ArgumentNullException' in NLua.dll
Value cannot be null.
Однако информация отображается в окне просмотра:
Изображение

Кроме того, я думал преобразовать таблицу в JSON и использовать класс C#, но мне не удалось сделать это из C# (пробовал использовать NLua для запуска сценария на Lua который преобразует таблицу в JSON, но безуспешно, так как мне не удалось сослаться на необходимые библиотеки Lua)

Подробнее здесь: https://stackoverflow.com/questions/790 ... table-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»