C# 将lua 键值转json 多种解法

动态 未结 0 155
小小草
小小草 LV1 2023年9月23日 23:40 发表
除了使用 Newtonsoft.Json 库外,还有其他几种将 Lua 表转换为 JSON 的方法。 1. 使用 System.Text.Json 库 System.Text.Json 是 .NET Core 3.0 引入的官方 JSON 库。以下是使用 System.Text.Json 将 Lua 表转换为 JSON 的示例代码: ```csharp using System.Text.Json; using NLua; // 假设 myTable 是一个 LuaTable 对象 string json = JsonSerializer.Serialize(myTable); ``` 2. 手动构建 JSON 字符串 您也可以手动构建 JSON 字符串来表示 Lua 表。以下是一个示例实现: ```csharp using NLua; public static string ToJson(LuaTable table) { var sb = new StringBuilder(); sb.Append("{"); foreach (var kvp in table) { var key = kvp.Key as string; var val = kvp.Value; if (val is LuaTable) { sb.AppendFormat("\"{0}\":{1},", key, ToJson(val as LuaTable)); } else if (val is string) { sb.AppendFormat("\"{0}\":\"{1}\",", key, EscapeString(val as string)); } else if (val is double || val is int || val is long || val is float) { sb.AppendFormat("\"{0}\":{1},", key, Convert.ToString(val)); } else if (val is bool) { sb.AppendFormat("\"{0}\":{1},", key, Convert.ToString(val).ToLower()); } else if (val == null) { sb.AppendFormat("\"{0}\":null,", key); } } if (sb[sb.Length - 1] == ',') { sb.Remove(sb.Length - 1, 1); } sb.Append("}"); return sb.ToString(); } public static string EscapeString(string str) { var sb = new StringBuilder(); foreach (var c in str) { switch (c) { case '\"': sb.Append("\\\""); break; case '\\': sb.Append("\\\\"); break; case '\b': sb.Append("\\b"); break; case '\f': sb.Append("\\f");
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复