当前位置: 首页 > news >正文

FastJson JSONPath 路径取值用法与场景总结

FastJson JSONPath 路径取值用法与场景总结

前言

在日常后端开发中,我们经常需要解析第三方接口返回的 JSON 数据。
传统方式需要一层层getJSONObject()getString(),代码繁琐、可读性差、维护成本高。
FastJson 提供的JSONPath可以通过路径表达式直接取值,一行代码搞定复杂嵌套 JSON,极大简化开发。


一、JSONPath 常用使用场景

场景1:解析多层嵌套的第三方接口返回值(最常用)

第三方接口返回的 JSON 往往嵌套很深,例如:

{"code":200,"data":{"result":{"userInfo":{"nickName":"张三","phone":"13800138000"}}}}

传统取值需要写:

json.getJSONObject("data").getJSONObject("result").getJSONObject("userInfo").getString("nickName");

层级越多越麻烦,还容易空指针。
使用 JSONPath 只需要一行,直接按路径取。


场景2:接口配置化、动态解析(数据库配置路径)

当系统需要对接大量第三方接口时:

  • 请求地址、请求头、请求体存在数据库
  • 响应的解析路径也存在数据库

程序不需要为每个接口写硬编码解析逻辑,只需要读取配置的 JSONPath 路径,动态取值
新增接口 = 配一条记录,零代码开发


场景3:快速提取数组、列表中的字段

JSON 里包含列表时,例如:

{"list":[{"id":1,"name":"A"},{"id":2,"name":"B"}]}

可以直接取:

  • list[0].name
  • list[*].name

不用遍历、不用循环,一行拿到结果。


场景4:统一封装工具类,避免重复代码

项目中 JSON 解析无处不在,把 JSONPath 封装成工具类,所有模块复用,代码更整洁。


二、依赖配置(你指定的版本)

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency>

三、最简演示代码(你原版代码,我帮你整理规范)

importcom.alibaba.fastjson.JSONObject;importcom.alibaba.fastjson.JSONPath;publicclassFastJsonPathDemo{publicstaticvoidmain(String[]args){// 1. 定义 JSON 字符串(多层嵌套结构)Stringjson="{\"data\":{\"user\":{\"name\":\"张三\"}}}";// 2. 一行代码根据路径取值Stringname=(String)JSONPath.eval(JSONObject.parseObject(json),"data.user.name");// 3. 输出结果System.out.println("取值结果:"+name);}}

运行输出

取值结果:张三

四、更多常用演示(方便你复习)

1. 直接传 JSON 字符串(更简单)

Stringname=(String)JSONPath.eval(json,"data.user.name");

2. 取数字类型

Stringjson="{\"data\":{\"user\":{\"age\":20}}}";Integerage=(Integer)JSONPath.eval(json,"data.user.age");

3. 取数组中某个字段

Stringjson="{\"list\":[{\"name\":\"张三\"},{\"name\":\"李四\"}]}";StringfirstName=(String)JSONPath.eval(json,"list[0].name");

五、总结(极简好记)

  1. 多层嵌套 JSON 取值,一行搞定,不用层层 get
  2. 接口配置化平台:路径存在数据库,动态解析,零代码扩展
  3. 数组、复杂结构都支持
  4. 代码简洁、易读、易维护
http://www.jsqmd.com/news/511995/

相关文章:

  • SEO_从零开始,手把手教你制定SEO执行方案(199 )
  • 西门子伺服分拣机西门子S7-1200 PLC程序,,有自己录4平详细讲解项目程序,4平已保护 ...
  • 2026哈尔滨汽车维修性价比排名,哈尔滨连顺汽车维修钣金喷漆价格合理吗 - 工业品网
  • VideoAgentTrek Screen Filter 与物联网结合:智能终端屏幕状态监控系统
  • 2026年上海境易达出国靠谱吗,深入分析其移民服务实力 - myqiye
  • 使用 Dify 快速构建对话式工作流:从零打造会议室预约智能体
  • Dify Token用量失控?3步完成轻量级监控插件部署,含OpenTelemetry埋点配置与成本阈值告警模板
  • 搞TC397的AUTOSAR?来点真实力
  • 为什么我们的大脑是“推理机”而非“硬盘”:关于学习、记忆与智慧的认知科学深度解析.
  • 颠覆“全职带娃轻松”,核算时间精力,机会成本,颠覆偏见,输出家庭劳动价值量化表。
  • 2026年上海境易达出国推荐吗,参考其客户评价与行业口碑 - mypinpai
  • 在Windows上找回Mac触控板体验:开源驱动如何打破平台壁垒?
  • 通信行业某国企数据岗员工CDA数据分析师备考经验:多元策略助你高效通关
  • DigitalOcean 亮相 NVIDIA GTC 2026:为智能体时代打造 AI 工厂
  • Z-Image-Turbo_Sugar脸部Lora赋能内容创作:短视频博主头像批量生成方案
  • 2026功率预测生死局:MKAN多尺度网络如何将光伏预测误差斩落马下?
  • 如何为本地开发环境配置 HTTPS 以对接微信登录
  • 世嘉MD完全档案中文版PDF
  • 零碳园区管理系统投资效益分析与评估模型的未来发展趋势
  • 为什么大厂软件都带签名?代码签名证书作用揭秘
  • OpenFein统一重试和统一降级,且原生Fein重试失效
  • 1%的预测精度提升,在现货市场值多少钱?基于100MW电站的年度收益敏感性分析
  • ClearerVoice-Studio与SpringBoot集成:构建智能语音微服务
  • 避坑指南:PINN在常微分方程积分中的常见问题与解决方案
  • SparkFun I2C GPS库:寄存器级控制与多星座定位开发指南
  • 【高精度气象】2026别再只问“天气准不准”:真正拉开收益差距的,是把预报接进交易、调度和运维
  • 深入理解 C#.NET TaskScheduler:为什么大量使用 Work-Stealing
  • 智能排班系统:企业人力资源管理的数字化革新
  • SiameseAOE模型内网穿透测试指南:本地开发调试GPU模型服务
  • 户籍制度捆绑资源下留守儿童问题对人口结构的长效影响