50 lines
1.7 KiB
C#
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}");
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|