有人知道在C#或任何.Net库中解析Lua数据结构的简单方法吗?这与JSON解码类似,除了Lua而不是javascript.
在这一点上看起来我需要自己编写,但希望已经有了一些东西.
感谢你们两位,我用LuaInterface找到了我想要的东西
这是Lua想要阅读的数据结构("c:\ sample.lua"):
TestValues = {
NumbericOneMillionth = 1e-006,
NumbericOnehalf = 0.5,
NumbericOne = 1,
AString = "a string"
}
Run Code Online (Sandbox Code Playgroud)
这里是一些使用LuaInterface读取Lua数据结构的示例代码:
Lua lua = new Lua();
var result = lua.DoFile("C:\\sample.lua");
foreach (DictionaryEntry member in lua.GetTable("TestValues")) {
Console.WriteLine("({0}) {1} = {2}",
member.Value.GetType().ToString(),
member.Key,
member.Value);
}
Run Code Online (Sandbox Code Playgroud)
以下是示例代码写入控制台的内容:
(System.String) AString = a string
(System.Double) NumbericOneMillionth = 1E-06
(System.Double) NumbericOnehalf = 0.5
(System.Double) NumbericOne = 1
Run Code Online (Sandbox Code Playgroud)
为了弄清楚如何使用库,我在Reflector中打开了LuaInterface.dll,并对成员函数进行了google.
亚历山大说的话.毕竟,实验室是Lua的故乡.
具体来说,LuaInterface可以允许Lua解释器嵌入到您的应用程序中,以便您可以使用Lua自己的解析器来读取数据.这类似于将Lua嵌入C/C++应用程序中以用作配置/数据文件语言.该LuaCLR项目可能会在某些时候卓有成效的为好,但它可能不是很成熟.
LsonLib可以解析 Lua 数据结构,操作它们并将结果序列化回 Lua 文本。完全披露:我是作者。它是纯 C# 并且没有依赖项。
鉴于:
MY_VAR = { "Foo", ["Bar"] = "Baz" }
ANOTHER = { 235, nil }
Run Code Online (Sandbox Code Playgroud)
基本用法:
var d = LsonVars.Parse(File.ReadAllText(somefile));
d["MY_VAR"][1].GetString() // returns "Foo"
d["MY_VAR"]["Bar"].GetString() // returns "Baz"
d["MY_VAR"][2] // throws
d["ANOTHER"][1].GetString() // throws because it's an int
d["ANOTHER"][1].GetInt() // returns 235
d["ANOTHER"][2] // returns null
d["ANOTHER"][1].GetStringLenient() // returns "235"
d["ANOTHER"][1] = "blah"; // now { "blah", nil }
d["ANOTHER"].Remove(2); // now { "blah" }
File.WriteAllText(somefile, LsonVars.ToString(d)); // save changes
Run Code Online (Sandbox Code Playgroud)
(它实际上是我们内部使用的 JSON 库的一个相当简单的端口,因此它具有相当多的功能,并且可能会留下一些 JSON 痕迹)
归档时间: |
|
查看次数: |
12217 次 |
最近记录: |