src/DotNetCommon.Core/Extensions/JsonExtensions.cs

(开头部分) 5KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json.Nodes;

namespace DotNetCommon.Extensions
{
    /// <summary>
    /// JsonObject、JsonArray 扩展类
    /// </summary>
    public static class JsonExtensions
    {
        /// <summary>
        /// 当前集合(<c>jsonArray</c>)是否含有<c>value</c>
        /// <list type="bullet">
        /// <item>当<c>value</c>为null时,直接返回true,否则下一步;</item>
        /// <item>当<c>jsonArray</c>为空时,直接返回false,否则下一步;</item>
        /// <item>返回<c>jsonArray</c>是否含有<c>value</c>;</item>
        /// </list>
        /// </summary>
        /// <remarks>比较前会将<c>JsonArray</c>反序列化为List&lt;T></remarks>
        public static bool ContainsObject<T>(this JsonArray jsonArray, T value, IEqualityComparer<T> equalityComparer = null)
        {
            if (value is null) return true;
            if (jsonArray == null || jsonArray.Count == 0) return false;
            var seq = jsonArray.ToJsonString().ToObject<List<T>>();
            return seq.Contains(value, equalityComparer);
        }

        /// <summary>
        /// 当前集合(<c>jsonArray</c>)是否含有<c>values</c>中的任何一个
        /// <list type="bullet">
        /// <item>当<c>values</c>为空时,直接返回true,否则下一步;</item>
        /// <item>当<c>jsonArray</c>为空时,直接返回false,否则下一步;</item>
        /// <item>返回<c>jsonArray</c>和<c>values</c>是否有交叉(Intersect);</item>
        /// </list>
        /// </summary>
        /// <remarks>比较前会将<c>JsonArray</c>反序列化为List&lt;T></remarks>
        public static bool ContainsObjectAny<T>(this JsonArray jsonArray, IEnumerable<T> objects, IEqualityComparer<T> equalityComparer = null)
        {
            if (objects.IsNullOrEmpty()) return true;
            if (jsonArray == null || jsonArray.Count == 0) return false;
            var seq = jsonArray.ToJsonString().ToObject<List<T>>();
            return seq.ContainsAny(objects, equalityComparer);
        }

        /// <summary>
        /// 当前集合(<c>jsonArray</c>)是否包含<c>values</c>中的全部
        /// <list type="bullet">
        /// <item>当<c>values</c>为空时,直接返回true,否则下一步;</item>
        /// <item>当<c>jsonArray</c>为空时,直接返回false,否则下一步;</item>
        /// <item>返回<c>values</c>减去<c>jsonArray</c>后是否为空(Except);</item>
        /// </list>
        /// </summary>
        /// <remarks>比较前会将<c>JsonArray</c>反序列化为List&lt;T></remarks>
        public static bool ContainsObjectAll<T>(this JsonArray jsonArray, IEnumerable<T> objects, IEqualityComparer<T> equalityComparer = null)
        {
            if (objects.IsNullOrEmpty()) return true;
            if (jsonArray == null || jsonArray.Count == 0) return false;
            var seq = jsonArray.ToJsonString().ToObject<List<T>>();
后面还有 92 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。