Java 在Json对象字符串中查找和提取特定的数据

1、在处理JSON数据时,需要提出个别字段的值,通过正则表达式提取特定的数据

public static void main(String[] args) {
        //定义多个JSON对象字符串类型,假设每个对象有a,b,c 字段
        String strJson = "{\"a\":1.23,\"b\":45.67,\"c\":89.01},"
                + "{\"a\":4.56,\"b\":78.90,\"c\":12.34}";

        // 定义正则表达式,用于匹配每个对象中的字段值,以下是匹配a,b,c 字段
        String regex = "\"a\":([\\d.]+),\"b\":([\\d.]+),\"c\":([\\d.]+)";

        //编译正则表达式,将正则表达式编译成模式对象。
        Pattern pattern = Pattern.compile(regex);

        //创建匹配器,用于在  strJson  字符串中查找匹配项。
        Matcher matcher = pattern.matcher(strJson);

        //定义集合
        List<String> dataA = new ArrayList<>();
        List<String> dataB = new ArrayList<>();
        List<String> dataC = new ArrayList<>();

        //循环查找每个匹配项
        while (matcher.find()) {
            //matcher.group(n) 提取匹配的值,其中n是捕获组的索引(索引从1开始)
            dataA.add(matcher.group(1));// 将提取的a数据项添加到列表中
            dataB.add(matcher.group(2));// 将提取的b数据项添加到列表中
            dataC.add(matcher.group(3));// 将提取的c数据项添加到列表中
        }

        // 输出提取的结果
        for (String s : dataA) {
            System.out.println("a的值:"+s);
        }
        System.out.println("-----分割线-----");
        for (String s : dataB) {
            System.out.println("b的值:"+s);
        }  
        System.out.println("-----分割线-----");
        for (String s : dataC) {
            System.out.println("c的值:"+s);
        }
    }

2、打印结果:

3、总结:

通过 Pattern 和 Matcher ,可以在字符串中查找和提取特定模式的数据。在处理 JSON 数据时,正则表达式可以是一个有用的工具,尽管在某些情况下,使用 JSON 解析库(如 Jackson 或 Gson)可能更为可靠和方便 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/930330.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进度与预算

一个项目&#xff0c;如果进度上可以按时完成&#xff0c;一般来说预算不会超标&#xff0c;或者超标幅度有限。 一个项目&#xff0c;如果进度上严重超期&#xff0c;预算基本上会超标&#xff0c;而且超标很大。 现在很多项目&#xff0c;人力成本占比都比较大&#xff0c…

Ungoogled Chromium127编译指南 Windows篇 - 安装Visual Studio 2022(六)

1. 引言 在编译Ungoogled Chromium之前&#xff0c;正确安装和配置Visual Studio 2022是至关重要的一步。作为主要的开发环境&#xff0c;Visual Studio不仅提供了必要的编译工具&#xff0c;还包含了大量构建过程中需要的组件和库。本文将详细介绍如何在Windows系统上安装和配…

电子商务人工智能指南 3/6 - 聊天机器人和客户服务

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

精确的单向延迟测量:使用普通硬件和软件

论文标题&#xff1a;Precise One-way Delay Measurement with Common Hardware and Software&#xff08;精确的单向延迟测量&#xff1a;使用普通硬件和软件&#xff09; 作者信息&#xff1a;Maciej Muehleisen 和 Mazen Abdel Latif&#xff0c;来自Ericsson Research Eri…

字符串的特征

底层是char类型的数组 char[] replace()&#xff1a;替换 split()&#xff1a;切分 indexOf()&#xff1a;第一个字符所在位置&#xff0c;从0开始算 substring(3, 6)&#xff1a;字符串截取&#xff0c;包括3不包括6 字符串不可变 本质上是数组&#xff0c;数组是固定值…

三维扫描检测在汽车制造中的应用

三维扫描&#xff0c;通过先进三维扫描技术获取产品和物体的形面三维数据&#xff0c;建立实物的三维图档&#xff0c;满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维数字化存档、逆向设计、产品开发、直接3D打印制造或辅助加工制造等一系列的应用。 三维扫描…

【已解决】黑马点评项目中启动Spring Boot服务失败,com.sun.tools.javac.tree.JCTree qualid

黑马点评项目中启动Spring Boot服务失败 报错提示 java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field com.sun.tools.javac.tree.JCTree qualid这是因为 lombok 版本不兼容造成的 找到 pom.xml 文件&#xff0…

Netty入门(快速了解以及使用netty)

二. Netty 入门 1. 概述 1.1 Netty 是什么&#xff1f; Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.Netty 是一个异步的、基于事件驱动的网络应用框架&…

Python办公—DataMatrix二维条码制作

目录 专栏导读1、库的介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…

前缀和(八)矩阵区域和

1314. 矩阵区域和 给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c < j k 且(r, c) 在矩阵内。 示例 1&…

Nginx日常运维方法Linux版

关注 工 仲 好&#xff1a;IT运维大本营1&#xff0c;安装&#xff1f; 下载RPM&#xff1a;wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm 离线包用其它方式下载也可以。 安装&#xff1a;rpm -ivh nginx-1.10.0-1.el7.ngx.x86_…

基于eFramework车控车设中间件介绍

车设的发展&#xff0c;起源于汽车工业萌芽之初&#xff0c;经历了机械式操作的原始粗犷&#xff0c;到电子式调控技术的巨大飞跃&#xff0c;到如今智能化座舱普及&#xff0c;远程车控已然成为汽车标配&#xff0c;车设功能选项也呈现出爆发式增长&#xff0c;渐趋多元繁杂。…

【Copilot 】TAB keybinding not working on JetBrains Client

pycharm ssh 远程到ubuntu24.04 发现tab就是tab,无法输出copilot给出的自动补全到便捷器里。禁用host的copilot插件,重新启动ide就好了。解决办法 参考大神的办法删除主机和客户端插件中的 Copilot插件。 仅在客户端中重新安装 Copilot 插件。 我只是禁用也可以 对比了键盘映…

使用API管理Dynadot域名,设置默认域名服务器ip信息

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…

【Linux】文件描述符fd

1.前置预备 文件 内容 属性访问文件之前&#xff0c;都必须先打开他 #include<stdio.h> int main() { FILE* fpfopen("log.txt","w"); if(fpNULL) { perror("fopen"); return 1; } fclose(fp); return 0…

微服务即时通讯系统(5)用户管理子服务,网关子服务

用户管理子服务&#xff08;user文件&#xff09; 用户管理子服务也是这个项目中的一个业务最多的子服务&#xff0c;接口多&#xff0c;但是主要涉及的数据表只有user表&#xff0c;Redis的键值对和ES的一个搜索引擎&#xff0c;主要功能是对用户的个人信息进行修改管理&#…

结构型-代理模式(Proxy Pattern)

什么是代理模式 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时&#xff0c;访问对象不适合或者不能直接引用目标对象&#xff0c;代理对象作为访问对象和目标对象之间的中介。 Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理…

如何实现多级缓存以及缓存之间数据的一致性

文章目录 神领物流 -- 如何实现多级缓存以及缓存之间数据的一致性一. 为什么要使用多级缓存?二. 为什么要选择MongoDB作为数据库三. 如何缓存之间的一致性1. 如何同步更新Redis缓存2. 如何同步更新CaffeineCache缓存 神领物流 – 如何实现多级缓存以及缓存之间数据的一致性 采…

哈希处理海量数据

接下来我们将以问题的形式来介绍如何用hash处理海量数据。 1.问题1 &#xff08;位图&#xff09; 给定100亿个整数&#xff0c;设计算法找到只出现一次的。 1.1问题分析 100亿个整数&#xff0c;一个整数占用4byte&#xff0c;那么就需要约40G左右的空间来存储。显然常见的…

锐捷Web认证

文章目录 Web认证二代 Web 认证配置 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Datacom专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月6日11点40分 Web认证 Portal 认证、Web认证 Web认证的介绍 Web 认证使用浏览器进行身份验…