使用 Java 正则表达式或 Jackson 库从字符串中提取 JSON 数组值

使用 java 正则表达式或 jackson 库从字符串中提取 json 数组值

本文介绍了在 Java 中从包含 JSON 数组的字符串中提取特定值的三种方法。首先,推荐使用 Jackson 库进行 JSON 解析,展示了如何通过 POJO 类或 JsonNode 来提取数据。其次,提供了一种在必须手动解析的情况下,通过正则表达式捕获 JSON 数组并进行分割的方法,虽然相对复杂,但在特定场景下仍然适用。

使用 Jackson 库解析 JSON

当处理 JSON 数据时,强烈推荐使用专门的 JSON 解析库,例如 Jackson 或 Gson。这些库提供了方便的 API,可以轻松地将 JSON 字符串转换为 Java 对象,避免了手动解析的复杂性和潜在错误。

1. 使用 POJO 类

如果 JSON 结构是固定的,可以定义一个对应的 POJO(Plain Old Java Object)类,使用 Jackson 库将其自动反序列化。

立即学习“Java免费学习笔记(深入)”;

import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.json.JsonMapper;import java.io.IOException;import java.util.List;public class MyPojo {    private List values;    public List getValues() {        return values;    }    public void setValues(List values) {        this.values = values;    }    public static void main(String[] args) throws IOException {        String jsonStr = "{"values": ["abc123", "def456", "xyz789"]}";        ObjectMapper mapper = new JsonMapper();        MyPojo pojo = mapper.readValue(jsonStr, MyPojo.class);        System.out.println(pojo.getValues()); // Output: [abc123, def456, xyz789]    }}

注意事项:

确保 POJO 类的属性名与 JSON 字段名匹配。需要添加 Jackson 库的依赖。

2. 使用 JsonNode

如果 JSON 结构是动态的,或者不想定义 POJO 类,可以使用 JsonNode 来解析 JSON。

Find JSON Path Online Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30 查看详情 Find JSON Path Online

import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.json.JsonMapper;import java.io.IOException;import java.util.List;public class JsonNodeExample {    public static void main(String[] args) throws IOException {        String jsonStr = "{"values": ["abc123", "def456", "xyz789"]}";        ObjectMapper mapper = new JsonMapper();        JsonNode node = mapper.readTree(jsonStr).get("values");        List values = mapper.readerFor(new TypeReference<List>() {}).readValue(node);        values.forEach(System.out::println);        // Output:        // abc123        // def456        // xyz789    }}

代码解释:

mapper.readTree(jsonStr) 将 JSON 字符串解析为 JsonNode 对象。.get(“values”) 获取名为 “values” 的 JSON 数组。mapper.readerFor(new TypeReference<List>() {}).readValue(node) 将 JSON 数组转换为 List。

手动解析 JSON (不推荐)

虽然不推荐,但在某些情况下,可能需要手动解析 JSON。以下提供一种使用正则表达式的方法,仅作为参考。

import java.util.Arrays;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;import java.util.stream.Collectors;public class RegexExample {    public static void main(String[] args) {        String jsonStr = "{"values": ["abc123", "def456", "xyz789"]}";        Pattern pattern = Pattern.compile(""values"s*:s*[(.+?)]");        Matcher matcher = pattern.matcher(jsonStr);        if (matcher.find()) {            String arrayContent = matcher.group(1);            List values = Arrays.stream(arrayContent.split(","))                    .map(s -> s.replaceAll(""", "").trim())                    .collect(Collectors.toList());            values.forEach(System.out::println);            // Output:            // abc123            // def456            // xyz789        }    }}

代码解释:

Pattern.compile(“”values”s*:s*[(.+?)]”) 定义了一个正则表达式,用于匹配 “values” 数组。(.+?) 使用非贪婪模式匹配数组的内容。matcher.group(1) 获取匹配到的数组内容。arrayContent.split(“,”) 将数组内容按逗号分割成字符串数组。map(s -> s.replaceAll(“””, “”).trim()) 移除每个字符串中的引号和空格。

注意事项:

这种方法依赖于 JSON 字符串的格式,如果格式不规范,可能会出错。正则表达式的性能可能不如 JSON 解析库。务必进行充分的测试,确保正则表达式能够正确处理各种情况。

总结:

推荐使用 Jackson 或 Gson 等 JSON 解析库来处理 JSON 数据。如果必须手动解析 JSON,请谨慎使用正则表达式,并进行充分的测试。使用 JSON 解析库可以提高代码的可读性、可维护性和性能。

以上就是使用 Java 正则表达式或 Jackson 库从字符串中提取 JSON 数组值的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/327753.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
《战地6》公布第一赛季内容:新地图新模式新载具!
上一篇 2026年11月4日 08:11:07
UC浏览器视频小窗播放怎么开启_UC浏览器小窗模式设置方法
下一篇 2025年11月25日 17:43:12

相关推荐

  • 《战地6》公布第一赛季内容:新地图新模式新载具!

    《战地6》公布第一赛季内容:新地图新模式新载具!《战地6》公布第一赛季内容:新地图新模式新载具!《战地6》公布第一赛季内容:新地图新模式新载具!《战地6》公布第一赛季内容:新地图新模式新载具!

    根据Gamingbolt的消息,DICE最近披露了《战地6》首个赛季的部分内容详情,该赛季将于10月28日正式启动。 首阶段将带来全新地图“Blackwell Fields”,支持从小型对战到大规模冲突的多种战斗形式。同时上线的还有4v4回合制模式“Strikepoint”,该模式中每个小队仅有一次…

    2026年11月4日 • 用户投稿
    1100
  • Java中如何实现电子邮件客户端功能

    Java中如何实现电子邮件客户端功能Java中如何实现电子邮件客户端功能Java中如何实现电子邮件客户端功能Java中如何实现电子邮件客户端功能

    答案:Java中实现邮件客户端需使用JavaMail API。1. 添加javax.mail依赖;2. 配置SMTP发送邮件,如QQ邮箱用smtp.qq.com端口587或465;3. 使用IMAP/POP3接收邮件,如imap.qq.com端口993;4. 注意开启邮箱服务、用授权码登录、处理异常…

    2026年11月4日 • 用户投稿
    100
  • 2K 三星珠峰屏最新测评

    2K 三星珠峰屏最新测评2K 三星珠峰屏最新测评2K 三星珠峰屏最新测评2K 三星珠峰屏最新测评

    2K 三星珠峰屏最新测评 在当今的智能手机市场中,屏幕技术的进步无疑是推动用户体验提升的关键因素之一。近期,iQOO品牌推出了搭载2K三星珠峰屏的最新机型,这一屏幕技术不仅在显示效果上带来了质的飞跃,还在功耗和亮度方面实现了突破性的进展。本文将对这款屏幕进行全面的测评,揭示其背后的技术亮点与实际表现…

    2026年11月4日 • 用户投稿
    200
  • 豆包AI生成竞品分析的秘诀 快速洞察市场格局的AI方法

    豆包AI生成竞品分析的秘诀 快速洞察市场格局的AI方法豆包AI生成竞品分析的秘诀 快速洞察市场格局的AI方法豆包AI生成竞品分析的秘诀 快速洞察市场格局的AI方法豆包AI生成竞品分析的秘诀 快速洞察市场格局的AI方法

    豆包ai在竞品分析中具备高效提炼信息与生成洞察的能力,其方法包括:1. 明确分析目标,通过精准输入关键词快速定位行业比较维度;2. 上传资料并智能提取关键信息,提升处理非结构化数据效率;3. 结合市场动态自动生成分析框架,提供可扩展的对比模板;4. 通过持续反馈优化输出结果,支持多轮对话细化需求。 …

    2026年11月4日 • 用户投稿
    000
  • win8复制文件速度慢怎么办_Win8复制文件慢优化

    win8复制文件速度慢怎么办_Win8复制文件慢优化win8复制文件速度慢怎么办_Win8复制文件慢优化win8复制文件速度慢怎么办_Win8复制文件慢优化win8复制文件速度慢怎么办_Win8复制文件慢优化

    1、关闭Windows搜索索引服务可减少磁盘占用,提升传输速度;2、切换至高性能电源模式确保硬件全速运行;3、禁用Superfetch和Prefetch避免资源争抢;4、调整磁盘策略启用写入缓存并关闭缓冲区刷新以优化性能。 如果您在进行文件传输操作时发现速度远低于预期,这可能是由于系统设置或后台服务…

    2026年11月4日 • 用户投稿
    000
  • Laravel中从Authorize.net交易获取银行卡末四位数字的教程

    本文详细介绍了在Laravel应用中如何通过Authorize.net API获取交易的银行卡末四位数字。核心在于正确使用API响应对象的公共getter方法(如getTransaction())来访问封装的交易详情,并进一步从支付信息中提取掩码后的卡号,确保遵循API的最佳实践和数据访问规范。 A…

    2026年11月4日
    000
  • 苹果手机官网查询通道 苹果查询官网手机页面

    苹果手机官网查询通道在https://checkcoverage.apple.com/cn/zh/,用户可通过输入序列号核对设备型号、颜色、存储等信息,查看激活状态、购买渠道、保修期限及维修历史,同时验证“查找我的iPhone”和激活锁状态,确保设备安全与交易透明。 苹果手机官网查询通道在哪里?这是…

    2026年11月4日
    000
  • 使用CriteriaQuery进行多级关联对象的预加载:解决子列表懒加载问题

    使用CriteriaQuery进行多级关联对象的预加载:解决子列表懒加载问题使用CriteriaQuery进行多级关联对象的预加载:解决子列表懒加载问题使用CriteriaQuery进行多级关联对象的预加载:解决子列表懒加载问题使用CriteriaQuery进行多级关联对象的预加载:解决子列表懒加载问题

    本文详细阐述了在Hibernate中使用CriteriaQuery预加载多级关联对象中嵌套集合的方法。通过链式调用Fetch对象,可以有效解决子对象中子列表的懒加载问题,避免N+1查询,提升数据访问效率。 在使用orm框架如hibernate时,数据预加载(eager fetching)是优化性能和…

    2026年11月4日 • 用户投稿
    100
  • windows怎么把动态磁盘转为基本磁盘_动态磁盘无损转换为基本磁盘教程

    windows怎么把动态磁盘转为基本磁盘_动态磁盘无损转换为基本磁盘教程windows怎么把动态磁盘转为基本磁盘_动态磁盘无损转换为基本磁盘教程windows怎么把动态磁盘转为基本磁盘_动态磁盘无损转换为基本磁盘教程windows怎么把动态磁盘转为基本磁盘_动态磁盘无损转换为基本磁盘教程

    动态磁盘转换为基本磁盘需先确认磁盘状态并备份数据;2. 使用EaseUS或AOMEI等第三方工具可无损转换;3. 若用DiskPart命令行则需clean操作导致数据丢失;4. 对系统盘建议通过克隆迁移至新基本磁盘后重新初始化原盘。 如果您发现Windows系统中的磁盘显示为动态磁盘,而您希望将其转…

    2026年11月4日 • 用户投稿
    000
  • 深入理解Mockito:正确模拟带内部方法的静态类函数

    深入理解Mockito:正确模拟带内部方法的静态类函数深入理解Mockito:正确模拟带内部方法的静态类函数深入理解Mockito:正确模拟带内部方法的静态类函数深入理解Mockito:正确模拟带内部方法的静态类函数

    本文旨在探讨使用Mockito模拟包含多态方法(特别是接受不同函数式接口参数的重载方法)的静态类字段时遇到的常见问题及其解决方案。我们将重点分析在Consumer和Function类型参数之间选择的困境,并提供正确的模拟策略,确保测试覆盖率和代码行为符合预期。 1. 问题场景描述 在进行单元测试时,…

    2026年11月4日 • 用户投稿
    000
  • 怎么用豆包AI帮我设计RPC接口 用AI自动生成gRPC/Thrift定义的技巧

    怎么用豆包AI帮我设计RPC接口 用AI自动生成gRPC/Thrift定义的技巧怎么用豆包AI帮我设计RPC接口 用AI自动生成gRPC/Thrift定义的技巧怎么用豆包AI帮我设计RPC接口 用AI自动生成gRPC/Thrift定义的技巧怎么用豆包AI帮我设计RPC接口 用AI自动生成gRPC/Thrift定义的技巧

    豆包ai能辅助设计rpc接口,但需明确需求并引导其生成idl定义。首先明确接口功能与数据结构,如“用户登录”、“订单创建”,包括输入参数、返回值及是否支持流式通信;其次在提示中指定使用grpc还是thrift协议及语法规范,如“用grpc的proto3语法写userservice”;再者可让ai一次…

    2026年11月4日 • 用户投稿
    000
  • 如何配置Windows Defender实现最强防护?

    如何配置Windows Defender实现最强防护?如何配置Windows Defender实现最强防护?如何配置Windows Defender实现最强防护?如何配置Windows Defender实现最强防护?

    要让Windows Defender发挥最强防护,需启用实时保护、云提交、防篡改、受控文件夹访问、攻击面减少规则、内存完整性等高级功能,并结合UAC、BitLocker、系统更新、防火墙及用户安全意识,构建多层次防御体系。 要让Windows Defender发挥出最强防护,核心在于启用所有高级保护…

    2026年11月4日 • 用户投稿
    000
  • Hibernate CriteriaQuery实现嵌套关联实体的即时加载策略

    Hibernate CriteriaQuery实现嵌套关联实体的即时加载策略Hibernate CriteriaQuery实现嵌套关联实体的即时加载策略Hibernate CriteriaQuery实现嵌套关联实体的即时加载策略Hibernate CriteriaQuery实现嵌套关联实体的即时加载策略

    本文探讨了如何使用 Hibernate CriteriaQuery 实现多层级关联实体(如子对象中的子列表)的即时加载。通过链式调用 fetch 方法,可以有效解决 N+1 问题,并确保嵌套集合数据在单次查询中被完整获取,从而提升应用性能和数据访问效率。 在基于jpa和hibernate的应用开发中…

    2026年11月4日 • 用户投稿
    000
  • 如何通过豆包AI进行音频处理?AI降噪与特征提取

    如何通过豆包AI进行音频处理?AI降噪与特征提取如何通过豆包AI进行音频处理?AI降噪与特征提取如何通过豆包AI进行音频处理?AI降噪与特征提取如何通过豆包AI进行音频处理?AI降噪与特征提取

    豆包ai虽以文本处理见长,但也支持基础音频处理。一、可通过语音转文字功能实现轻度降噪:安静环境录音后转写,系统自动优化声音,部分版本可导出缓存音频;二、借助语言理解能力提取语义特征:包括关键词提取、情绪判断、主题归纳;三、建议结合第三方工具提升处理效果:如讯飞听见、audacity及豆包api接口,…

    2026年11月4日 • 用户投稿
    000
  • Via浏览器误删了书签怎么找回来_Via浏览器恢复误删书签的方法

    Via浏览器误删了书签怎么找回来_Via浏览器恢复误删书签的方法Via浏览器误删了书签怎么找回来_Via浏览器恢复误删书签的方法Via浏览器误删了书签怎么找回来_Via浏览器恢复误删书签的方法Via浏览器误删了书签怎么找回来_Via浏览器恢复误删书签的方法

    Via浏览器删除书签后可通过三种方式恢复:1. 使用内置回收站功能,在7天内找回并恢复;2. 若开启云同步,重新登录账号并同步云端数据;3. 通过文件管理器查找本地backup目录下的bookmarks.json文件,手动复制到指定路径并恢复。 如果您在使用Via浏览器时不小心删除了重要的书签,可能…

    2026年11月4日 • 用户投稿
    000
  • 如何使用MySQL的正则表达式进行高级数据匹配

    如何使用mysql的正则表达式进行高级数据匹配 引言:在数据处理和分析的过程中,经常需要对数据进行匹配和过滤。MySQL是一个常用的关系型数据库管理系统,它提供了丰富的字符串函数来支持数据的处理。其中,正则表达式是一种强大的工具,可以在数据库中进行更精确、高级的数据匹配。本文将介绍如何使用mysql…

    2026年11月4日
    000
  • 豆包AI如何帮你理解设计模式?面向对象编程实践

    豆包AI如何帮你理解设计模式?面向对象编程实践豆包AI如何帮你理解设计模式?面向对象编程实践豆包AI如何帮你理解设计模式?面向对象编程实践豆包AI如何帮你理解设计模式?面向对象编程实践

    设计模式是解决编程中常见问题的经验总结,它与oop关系密切,因为oop的封装、继承、多态等特性是实现这些模式的基础。例如,工厂模式用于灵活创建对象,观察者模式用于松耦合地协同多个对象。学习时常见误区包括为用模式而用模式、背下来却不会用。豆包ai可通过生活化类比、根据理解水平调整讲解方式、提供可运行代…

    2026年11月4日 • 用户投稿
    200
  • 海棠文学城最新章节入口_海棠文学城最新章节入口访问方法

    海棠文学城最新章节入口_海棠文学城最新章节入口访问方法海棠文学城最新章节入口_海棠文学城最新章节入口访问方法海棠文学城最新章节入口_海棠文学城最新章节入口访问方法海棠文学城最新章节入口_海棠文学城最新章节入口访问方法

    海棠文学城最新章节入口需登录后通过搜索或书架查找,进入小说详情页即可在章节列表顶部看到最新更新内容。 海棠文学城最新章节入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来海棠文学城最新章节入口访问方法,感兴趣的网友一起随小编来瞧瞧吧! https://www.haitangwenxue.…

    2026年11月4日 • 用户投稿
    1000
  • PHP 中如何实现动态比较操作

    本文介绍在 PHP 中根据变量值动态应用比较运算符的方法。通过 switch 语句或 PHP 8+ 的 match 表达式,开发者可以灵活地构建动态比较逻辑,以应对从数据库或其他来源获取的运算符字符串,从而实现更具适应性的条件判断。 在 php 开发中,我们有时会遇到需要根据外部(如数据库、用户输入…

    2026年11月4日
    200
  • 5999 iPhone 17 来了,这次买吗?

    5999 iPhone 17 来了,这次买吗?5999 iPhone 17 来了,这次买吗?5999 iPhone 17 来了,这次买吗?5999 iPhone 17 来了,这次买吗?

    今天,苹果正式发布了全新一代 iphone 系列,带来了前所未有的产品阵容。 除了常规升级的 iPhone 17、iPhone 17 Pro 和 iPhone 17 Pro Max 外,此次还首次亮相了传闻已久的超轻薄新机——iPhone Air。 iPhone 17 外观上,iPhone 17 延…

    2026年11月4日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信