如何将 Lua 数据表解析为 C# 字典或其他可用类?

我有一个 Lua 文件,其中包含以下代码:

options = {
["VR"] = {
    ["box_mouse_cursor"] = false,
    ["custom_IPD"] = 63.5,
    ["custom_IPD_enable"] = true,
    ["enable"] = false,
    ["hand_controllers"] = false,
    ["pixel_density"] = 2,
    ["prefer_built_in_audio"] = true,
    ["use_mouse"] = true,
    }
}

我正在寻找一个程序集,可以将其解析为我的 .Net Framework 4.5.1 C# 项目可以使用的东西。LuaInterface 是 .NET standard 2.0 项目,无法在 .Net Framework 4.5.1 中使用,因此不在考虑范围内。

是否有可用的工具可以解析这些信息,并希望将其序列化回来?

点赞
用户4403144
用户4403144

我会考虑使用 Lua 将你所拥有的嵌套表结构编码成 JSON。这会给你一个标准格式,可以写入磁盘,或者轻松地传递到另一个代码库中。当你在网络上搜索时,会有很多选项可供选择(lua table encode json),甚至在这里的 SO 上,当类似的问题被问到时,人们也在试图向外推销他们的 JSON 编码/解码 Lua 库。例如,这里是反向情况的一个示例。

2018-07-03 23:58:18
用户6834680
用户6834680
  1. 下载 LuaInterface 2.0.3

  2. 在 C# 项目中添加 LuaInterface.dll,并将 lua51.dll 复制到项目文件夹中

  3. 修改 app.config(在启动标记中添加属性)

<startup useLegacyV2RuntimeActivationPolicy="true">
  1. 编写 C# 代码以读取您需要的值:
using LuaInterface;

        Lua lua = new Lua();
        string Lua_code = @"
            options = {
                [""VR""] = {
                    [""box_mouse_cursor""] = false,
                    [""custom_IPD""] = 63.5,
                    [""custom_IPD_enable""] = true,
                    [""enable""] = false,
                    [""hand_controllers""] = false,
                    [""pixel_density""] = 2,
                    [""prefer_built_in_audio""] = true,
                    [""use_mouse""] = true,
                }
            }
        ";
        lua.DoString(Lua_code);
        double custom_IPD_value = (double)lua["options.VR.custom_IPD"];
        textBox1.Text = custom_IPD_value.ToString();
2018-07-04 14:58:13