c#用正则表达式提取json中字段的值

    /// <summary>
    /// 获取JSON字符串中所有指定KEY的值
    /// </summary>
    public static List<string> GetAllJsonValue(String jsonString, String key)
    {
        List<string> lst = new List<string>();
        string pattern = $"\"{key}\"\\s*:\\s*\"(.*?)\\\"";
        MatchCollection matches = Regex.Matches(jsonString, pattern, RegexOptions.IgnoreCase);
        foreach (Match match in matches)
        {
            lst.Add(match.Groups[1].Value);
        }
        return lst;
    }

    /// <summary>
    /// 获取JSON字符串中首个指定KEY的值
    /// </summary>
    public static string GetFirstJsonValue(String jsonString, String key)
    {
        string pattern = $"\"{key}\"\\s*:\\s*\"(.*?)\\\"";
        Match match = Regex.Match(jsonString, pattern, RegexOptions.IgnoreCase);
        if (match.Success)
        {
            return match.Groups[1].Value;
        }
        return null;
    }

  注意,冒号: 两边的\s*,这个是匹配0次或无限次空格,有了它在格式化(PrettyPrint)后的json中也能匹配到,不然只能在压缩格式中匹配到。

 参考文章:https://www.cnblogs.com/uu102/archive/2012/10/12/2721580.html

posted @ 2023-10-26 15:46  zerozabuu  阅读(708)  评论(0编辑  收藏  举报