using XFEExtension.NetCore.XFETransform.Json;
namespace XFEExtension.NetCore.StringExtension.Json;
///
/// 字符串查找及 JSON 编解码扩展。
///
public static class JsonStringExtension
{
/// 被操作的字符串。
extension(string str)
{
///
/// 根据给定的开头和末尾返回查找到的第一个匹配字符串。
///
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);
}
///
/// 通过给定文本格式查找对应字段。
///
public string GetTextByForm(string form) => str.GetStringBetweenTwoString(form + ":", ",");
///
/// 将当前 JSON 字符串反序列化为指定类型。
///
public T? FromJson(XFEJsonOptions? options = null) => XFEJson.Deserialize(str, options);
}
/// 待转换对象。
extension(object obj)
{
///
/// 转换为 JSON 字符串。
///
public string ToJson(bool formatted = false) =>
XFEJson.Serialize(obj, new XFEJsonOptions { WriteIndented = formatted });
///
/// 使用指定选项转换为 JSON 字符串。
///
public string ToJson(XFEJsonOptions options) => XFEJson.Serialize(obj, options);
///
/// JSON 字符串文本。
///
public string Json => obj.ToJson();
}
}