【笔记分享】获取Json数据的所有Key原创
金蝶云社区-dap
dap
2人赞赏了该文章 1,617次浏览 未经作者许可,禁止转载编辑于2020年09月29日 15:31:14
private static readonly List<string> ListStrings = new List<string>();

/// <summary>
/// 获取所有不同的key
/// </summary>
/// <param name="jObject"></param>
private static void GetAllKeys(JObject jObject)
{
    foreach (var keyValuePair in jObject)
    {
        // var keyStr = keyValuePair.Key.ToUpper();
        var keyStr = keyValuePair.Key;
        // 去重
        if (!ListStrings.Contains(keyStr))
        {
            ListStrings.Add(keyStr);
        }

        switch (keyValuePair.Value)
        {
            case JObject jc:
                GetAllKeys(jc);
                break;
            case JArray ja:
            {
                foreach (var jToken in ja)
                {
                    jObject = jToken as JObject;
                    GetAllKeys(jObject);
                }

                break;
            }
        }
    }
}
/// <summary>
/// 获取两个list中不同的key
/// </summary>
/// <param name="formalObj"></param>
/// <param name="newObj"></param>
/// <returns></returns>
private static List<string> GetDiff(JObject formalObj, JObject newObj)
{
    // 标准的list
    GetAllKeys(formalObj);
    var list1 = ListStrings.ToList();
    // 清空
    ListStrings.Clear();

    // 新的list
    GetAllKeys(newObj);
    var list2 = ListStrings.ToList();
    ListStrings.Clear();
    var diffList = list2.Where(s1 => !list1.Contains(s1)).ToList();
    return diffList;
}


赞 2