You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:06:25