如何用C#正则表达式将LUA表文件转换为JSON格式?
Lua表转JSON的C#实现方案
可以用正则表达式在C#中完成结构规则的简单Lua表到JSON的转换,比如你给出的示例这种无复杂语法的场景。下面是具体实现思路和代码:
核心转换步骤
针对你的Lua表结构,需要做这些正则替换:
- 移除Lua的变量声明语句(比如
local tbl =) - 给所有非字符串形式的键名添加双引号(JSON要求键必须是带双引号的字符串)
- 移除表末尾的多余逗号(JSON不允许 trailing comma)
- 确保所有字符串使用双引号(如果Lua里有单引号字符串需要替换)
C#代码示例
using System; using System.Text.RegularExpressions; class LuaToJsonConverter { static void Main() { string luaContent = @"local tbl = { SomeObject = { Key = ""Value"", AnotherKey = { Key1 = ""Value 1"", Key2 = ""Value 2"", Key3 = ""Value 3"", } }, AnotherObject = { Key = ""Value"", AnotherKey = { Key1 = ""Value 1"", Key2 = ""Value 2"", Key3 = ""Value 3"", } } }"; // 步骤1: 移除local变量声明 string step1 = Regex.Replace(luaContent, @"local\s+\w+\s+=\s+", ""); // 步骤2: 给非引号包裹的键名添加双引号 string step2 = Regex.Replace(step1, @"(\w+)\s*=", @"""$1"":"); // 步骤3: 移除表末尾的多余逗号(比如},前的逗号) string step3 = Regex.Replace(step2, @",\s*([}\]])", @"$1"); // 步骤4: 处理可能的单引号字符串(如果有的话) string jsonContent = Regex.Replace(step3, @"'([^']+)'", @"""$1"""); Console.WriteLine(jsonContent); } }
注意事项
- 正则只适合无复杂语法的Lua表:如果你的Lua文件包含函数定义、多行字符串、注释、表达式计算值(比如
Key = 1+2)、nil值(需要替换为null),正则会失效。 - 复杂场景建议用专门的Lua解析库:通过Lua解析器先读取表结构,再序列化为JSON,这种方式能处理所有合法Lua语法,比正则可靠得多。
内容的提问来源于stack exchange,提问作者frenkey
相关产品推荐
相关产品推荐

