using Forks.EnterpriseServices.DomainObjects2;
|
|
using Forks.Utils;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BWP.B3ClientService
|
|
{
|
|
public static class ConvertUtil
|
|
{
|
|
public static string ESerializeDateTime(this string json)
|
|
{
|
|
return Regex.Replace(json, @"\\/Date\((\d+)\)\\/", match =>
|
|
{
|
|
DateTime dt = new DateTime(1970, 1, 1);
|
|
dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value));
|
|
dt = dt.ToLocalTime();
|
|
return dt.ToString("yyyy-MM-dd HH:mm:ss");
|
|
});
|
|
}
|
|
}
|
|
|
|
public class NameValueJsonConverter<T> : JsonConverter
|
|
{
|
|
public override bool CanConvert(Type objectType)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
{
|
|
JToken t = JToken.FromObject(value);
|
|
|
|
if (t.Type != JTokenType.Object)
|
|
{
|
|
t.WriteTo(writer);
|
|
}
|
|
else
|
|
{
|
|
NamedValue<T>? newValue = value as NamedValue<T>?;
|
|
if (newValue != null)
|
|
{
|
|
var sValue = newValue.Value.Value;
|
|
writer.WriteValue(sValue);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
|
{
|
|
throw new NotImplementedException("不支持反序列化");
|
|
}
|
|
}
|
|
|
|
public class OneToManyCollectionJsonConverter<T, L> : JsonConverter
|
|
where T : DmoCollection<L>
|
|
{
|
|
public override bool CanConvert(Type objectType)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
|
{
|
|
throw new NotImplementedException("不支持反序列化");
|
|
}
|
|
|
|
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
{
|
|
var list = (value as DmoCollection<L>).ToList();
|
|
|
|
JToken t = JToken.FromObject(list);
|
|
if (t.Type != JTokenType.Object)
|
|
{
|
|
t.WriteTo(writer);
|
|
}
|
|
else
|
|
{
|
|
if (list != null)
|
|
writer.WriteValue(list);
|
|
}
|
|
}
|
|
}
|
|
}
|