【调整】cfg data_json2输出的json顶层结构由array调整为object
parent
92493005a7
commit
bea3edf0ca
|
|
@ -11,7 +11,7 @@ namespace Luban.Job.Cfg.DataExporters
|
||||||
{
|
{
|
||||||
public static JsonExportor Ins { get; } = new JsonExportor();
|
public static JsonExportor Ins { get; } = new JsonExportor();
|
||||||
|
|
||||||
public void WriteList(List<Record> datas, DefAssembly ass, Utf8JsonWriter x)
|
public void WriteAsArray(List<Record> datas, DefAssembly ass, Utf8JsonWriter x)
|
||||||
{
|
{
|
||||||
x.WriteStartArray();
|
x.WriteStartArray();
|
||||||
foreach (var d in datas)
|
foreach (var d in datas)
|
||||||
|
|
@ -21,6 +21,51 @@ namespace Luban.Job.Cfg.DataExporters
|
||||||
x.WriteEndArray();
|
x.WriteEndArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ToStringValue(DType data)
|
||||||
|
{
|
||||||
|
switch (data)
|
||||||
|
{
|
||||||
|
case DInt dint: return dint.Value.ToString();
|
||||||
|
case DLong dlong: return dlong.Value.ToString();
|
||||||
|
case DString dstring: return dstring.Value;
|
||||||
|
case DEnum denum: return denum.Value.ToString();
|
||||||
|
case DShort dshort: return dshort.Value.ToString();
|
||||||
|
default: throw new NotSupportedException($"data_json2 not support key type:{data.GetType().Name}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteAsObject(DefTable table, List<Record> datas, DefAssembly ass, Utf8JsonWriter x)
|
||||||
|
{
|
||||||
|
switch (table.Mode)
|
||||||
|
{
|
||||||
|
case RawDefs.ETableMode.ONE:
|
||||||
|
{
|
||||||
|
this.Accept(datas[0].Data, ass, x);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RawDefs.ETableMode.MAP:
|
||||||
|
{
|
||||||
|
|
||||||
|
x.WriteStartObject();
|
||||||
|
string indexName = table.IndexField.Name;
|
||||||
|
foreach (var rec in datas)
|
||||||
|
{
|
||||||
|
var indexFieldData = rec.Data.GetField(indexName);
|
||||||
|
|
||||||
|
x.WritePropertyName(ToStringValue(indexFieldData));
|
||||||
|
this.Accept(rec.Data, ass, x);
|
||||||
|
}
|
||||||
|
|
||||||
|
x.WriteEndObject();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
throw new NotSupportedException($"not support table mode:{table.Mode}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Accept(DBool type, DefAssembly ass, Utf8JsonWriter x)
|
public void Accept(DBool type, DefAssembly ass, Utf8JsonWriter x)
|
||||||
{
|
{
|
||||||
x.WriteBooleanValue(type.Value);
|
x.WriteBooleanValue(type.Value);
|
||||||
|
|
|
||||||
|
|
@ -44,12 +44,12 @@ namespace Luban.Job.Cfg.Utils
|
||||||
});
|
});
|
||||||
if (dataType == "data_json")
|
if (dataType == "data_json")
|
||||||
{
|
{
|
||||||
JsonExportor.Ins.WriteList(records, table.Assembly, jsonWriter);
|
JsonExportor.Ins.WriteAsArray(records, table.Assembly, jsonWriter);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
Json2Exportor.Ins.WriteList(records, table.Assembly, jsonWriter);
|
Json2Exportor.Ins.WriteAsObject(table, records, table.Assembly, jsonWriter);
|
||||||
}
|
}
|
||||||
jsonWriter.Flush();
|
jsonWriter.Flush();
|
||||||
return System.Text.Encoding.UTF8.GetString(DataUtil.StreamToBytes(ss));
|
return System.Text.Encoding.UTF8.GetString(DataUtil.StreamToBytes(ss));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue