luban/src/Luban.Job.Cfg/Source/Utils/DataConvertUtil.cs

50 lines
1.7 KiB
C#

using Luban.Job.Cfg.DataConverts;
using Luban.Job.Cfg.Datas;
using Luban.Job.Cfg.Defs;
using Luban.Job.Cfg.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
namespace Luban.Job.Cfg.Utils
{
static class DataConvertUtil
{
public static string ToConvertRecord(DefTable table, Record record, string converType)
{
switch (converType)
{
case "convert_json":
{
// data_json与data_json2格式区别在于
// data_json的map格式是 [[key1,value1],[] ..]
// data_json2的map格式是 { key1:value1, ...}
var ss = new MemoryStream();
var jsonWriter = new Utf8JsonWriter(ss, new JsonWriterOptions()
{
Indented = true,
SkipValidation = false,
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All),
});
record.Data.Apply(JsonConvertor.Ins, jsonWriter);
jsonWriter.Flush();
return System.Text.Encoding.UTF8.GetString(DataUtil.StreamToBytes(ss));
}
case "convert_lua":
{
return new LuaConvertor().ExportRecord(table, record);
}
default:
{
throw new ArgumentException($"not support datatype:{converType}");
}
}
}
}
}