
本文旨在提供一种使用 Java 正则表达式从 JSON 数组中提取独立 JSON 对象的方法。通过使用特定的正则表达式和 Java 的 Pattern 类,可以将包含多个 JSON 对象的字符串分割成独立的、可解析的 JSON 对象字符串,以便后续处理和反序列化。本文将提供代码示例和详细解释,帮助读者理解和应用该技术。
从 JSON 数组中提取 JSON 对象是一个常见的任务,特别是在处理 API 响应或读取包含多个对象的 JSON 文件时。虽然有很多 JSON 解析库可以完成这个任务,但在某些情况下,使用正则表达式可能是一种更灵活或更快速的解决方案。
以下是如何使用 Java 正则表达式来实现此目的:
1. 正则表达式
用于提取 JSON 对象的正则表达式如下:
(?s)(?<=^    )\{.*?(?<=^    )}这个正则表达式的含义如下:
2. Java 代码示例
以下是一个使用该正则表达式的 Java 代码示例:
 
                        Easily find JSON paths within JSON objects using our intuitive Json Path Finder
 30
30
                             
                    import java.util.List;
import java.util.regex.MatchResult;
import java.util.regex.Pattern;
import static java.util.stream.Collectors.toList;
public class JsonExtractor {
    public static void main(String[] args) {
        String input ="[
" +
                "    {
" +
                "        "name": "User1",
" +
                "        "gender": "M"
" +
                "    },
" +
                "    {
" +
                "        "name": "User2",
" +
                "        "gender": "F"
" +
                "    }
" +
                "]";
        List<String> jsonObjects = Pattern.compile("(?sm)(?<=^    )\{.*?(?<=^    )}")
                .matcher(input).results()
                .map(MatchResult::group)
                .map(str -> str.replaceAll("[\s\n]*(?!"),)", "")) // remove whitespace
                .collect(toList());
        System.out.println(jsonObjects);
    }
}这段代码首先定义了一个包含 JSON 数组的字符串 input。然后,它使用 Pattern.compile() 方法编译正则表达式,并使用 matcher() 方法创建一个 Matcher 对象。results() 方法返回一个 MatchResult 流,map(MatchResult::group) 从每个匹配项中提取匹配的字符串。最后,使用 collect(toList()) 将提取的字符串收集到一个 List 中。代码中还添加了一个额外的 map 操作,用于移除每个 JSON 对象字符串中的空格和换行符,以获得更简洁的输出。正则表达式 [\s\n]*(?!"),) 用于匹配所有空格和换行符,除非它们紧跟在双引号后面。
3. 输出
运行上述代码将产生以下输出:
[{"name":"User1","gender":"M"}, {"name":"User2","gender":"F"}]4. 注意事项
5. 总结
本文介绍了一种使用 Java 正则表达式从 JSON 数组中提取 JSON 对象的方法。虽然正则表达式可能不是处理 JSON 的最佳方法,但在某些情况下,它可以提供一种快速而灵活的解决方案。在使用正则表达式处理 JSON 时,请务必注意 JSON 格式、性能和复杂性,并确保正确转义正则表达式中的特殊字符。对于更复杂的 JSON 结构,建议使用专门的 JSON 解析库。
以上就是使用正则表达式从 JSON 数组中提取 JSON 对象的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号