引用Newtonsoft和XmlSerializer配合做的通用Json XML反序列化对象函数(C#)

发布时间:2024年01月23日

在对接中我们最常接触到的数据格式为Json和XML,往往我们会用Newtonsoft和XmlSerializer进行反序列化成对象,从而能够使劲造。写得多了,总想搞点通用的玩意儿,不知道这是不是程序员的通病。下面分享一个通用的Json或XML反序列化函数。

首先咱先扩展一下String类:

namespace System
{
    public static class StringExtensions
    {
        public static bool IsJson(this string payload)
        {
            var pl = payload.Trim();
            return pl.StartsWith("{") && pl.EndsWith("}") ||
                pl.StartsWith("[") && pl.EndsWith("]");
        }

        public static bool IsXml(this string payload)
        {
            var pl = payload.Trim();
            return pl.StartsWith("<") && pl.EndsWith(">");
        }
    }
}

然后再去写目标函数:

private T getData<T>(string payload)
{
    if (payload.IsJson())
    {
        return JsonConvert.DeserializeObject<T>(payload);
    }
    else
    {
        var serializer = new XmlSerializer(typeof(T));
        return (T)serializer.Deserialize(new MemoryStream(payload));
    }
}

应用时,只需要传入对象和字符串即可。

var so = getData<SalesOrder>(payload);

实属班门弄斧不自量,权作抛砖引玉撩一笑。

文章来源:https://blog.csdn.net/u010407072/article/details/135749646
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。