diff --git a/Falcon.SugarApi/ISerialize.cs b/Falcon.SugarApi/ISerialize.cs index 248e52d..c1bb6ca 100644 --- a/Falcon.SugarApi/ISerialize.cs +++ b/Falcon.SugarApi/ISerialize.cs @@ -1,4 +1,6 @@ -namespace Falcon.SugarApi +using System; + +namespace Falcon.SugarApi { /// /// 序列化对象到字符串 @@ -20,5 +22,22 @@ /// 序列化字符串 /// 对象实例 public T? Deserialize(string str) where T : class; + + /// + /// 反序列化json字符串 + /// + /// json字符串 + /// 返回类型 + /// json对象 + public object? Deserialize(string str, Type returnType); + + /// + /// 序列化json对象 + /// + /// json对象 + /// 输入类型 + /// json字符串 + public string Serialize(object obj, Type inputType); + } } diff --git a/Falcon.SugarApi/JsonSerialize/JsonSerialize.cs b/Falcon.SugarApi/JsonSerialize/JsonSerialize.cs index cc0eff1..71fbb27 100644 --- a/Falcon.SugarApi/JsonSerialize/JsonSerialize.cs +++ b/Falcon.SugarApi/JsonSerialize/JsonSerialize.cs @@ -1,4 +1,5 @@ -using System.Text.Json; +using System; +using System.Text.Json; namespace Falcon.SugarApi.JsonSerialize { @@ -23,5 +24,22 @@ namespace Falcon.SugarApi.JsonSerialize /// json字符串 public string Serialize(T obj) => JsonSerializer.Serialize(obj); + /// + /// 反序列化json字符串 + /// + /// json字符串 + /// 返回类型 + /// json对象 + public object? Deserialize(string str, Type returnType) => JsonSerializer.Deserialize(str, returnType); + + /// + /// 序列化json对象 + /// + /// 对象类型 + /// json对象 + /// 输入类型 + /// json字符串 + public string Serialize(object obj, Type inputType) => JsonSerializer.Serialize(obj, inputType); + } } diff --git a/Falcon.SugarApi/XmlSerialize/XmlSerialize.cs b/Falcon.SugarApi/XmlSerialize/XmlSerialize.cs index 818de9b..2acab0e 100644 --- a/Falcon.SugarApi/XmlSerialize/XmlSerialize.cs +++ b/Falcon.SugarApi/XmlSerialize/XmlSerialize.cs @@ -1,4 +1,5 @@ -using System.IO; +using System; +using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; @@ -47,7 +48,19 @@ namespace Falcon.SugarApi.XmlSerialize /// 对象 /// 序列化字符串 public string Serialize(T obj) { - var xmlSerializer = new XmlSerializer(typeof(T)); + return Serialize(obj, typeof(T)); + } + + /// + public object? Deserialize(string str, Type returnType) { + var serializer = new XmlSerializer(returnType); + using var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)); + return serializer.Deserialize(ms); + } + + /// + public string Serialize(object obj, Type inputType) { + var xmlSerializer = new XmlSerializer(inputType); using var ms = new MemoryStream(); XmlSerializerNamespaces xmlSerializerNamespaces = new(); if (this.Settings.Namespaces.Count > 0) { @@ -60,11 +73,11 @@ namespace Falcon.SugarApi.XmlSerialize } var settings = new XmlWriterSettings { OmitXmlDeclaration = this.Settings.OmitXmlDeclaration, - Encoding =this.Settings.Encoding, + Encoding = this.Settings.Encoding, Indent = this.Settings.Indent, IndentChars = this.Settings.IndentChars, }; - using XmlWriter xmlWriter = new MyXmlWriter(XmlWriter.Create(ms, settings),this.Settings); + using XmlWriter xmlWriter = new MyXmlWriter(XmlWriter.Create(ms, settings), this.Settings); xmlSerializer.Serialize(xmlWriter, obj, xmlSerializerNamespaces); ms.Position = 0; using var sr = new StreamReader(ms, Encoding.UTF8);