XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension

【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等

公开
关注 0 Fork 0 Star 0
UTF-8
using XFEExtension.NetCore.XFETransform.Json;

namespace XFEExtension.NetCore.StringExtension.Json;

/// <summary>
/// 字符串查找及 JSON 编解码扩展。
/// </summary>
public static class JsonStringExtension
{
    /// <param name="str">被操作的字符串。</param>
    extension(string str)
    {
        /// <summary>
        /// 根据给定的开头和末尾返回查找到的第一个匹配字符串。
        /// </summary>
        public string GetStringBetweenTwoString(string beginString, string endString)
        {
            if (str == string.Empty)
                return string.Empty;
            var beginIndex = str.IndexOf(beginString, StringComparison.Ordinal);
            if (beginIndex is -1 or 0)
                return string.Empty;
            var endIndex = str.IndexOf(endString, beginIndex, StringComparison.Ordinal);
            return endIndex is -1 or 0
                ? string.Empty
                : str.Substring(beginIndex + beginString.Length, endIndex - beginIndex - beginString.Length);
        }

        /// <summary>
        /// 通过给定文本格式查找对应字段。
        /// </summary>
        public string GetTextByForm(string form) => str.GetStringBetweenTwoString(form + ":", ",");

        /// <summary>
        /// 将当前 JSON 字符串反序列化为指定类型。
        /// </summary>
        public T? FromJson<T>(XFEJsonOptions? options = null) => XFEJson.Deserialize<T>(str, options);
    }

    /// <param name="obj">待转换对象。</param>
    extension(object obj)
    {
        /// <summary>
        /// 转换为 JSON 字符串。
        /// </summary>
        public string ToJson(bool formatted = false) =>
            XFEJson.Serialize(obj, new XFEJsonOptions { WriteIndented = formatted });

        /// <summary>
        /// 使用指定选项转换为 JSON 字符串。
        /// </summary>
        public string ToJson(XFEJsonOptions options) => XFEJson.Serialize(obj, options);

        /// <summary>
        /// JSON 字符串文本。
        /// </summary>
        public string Json => obj.ToJson();
    }
}