Fastjson JSONPath 用法

news/2025/2/21 11:33:53/文章来源:https://www.cnblogs.com/aibi1/p/18728942

FastJSON 是阿里巴巴开源的一个高性能的 JSON 处理库,它也支持 JSONPath 语法,允许你通过 JSONPath 表达式在 JSON 数据中快速定位和提取特定的数据。以下是阿里 FastJSON 中 JSONPath 的常见用法及示例:

1. 添加依赖

如果你使用的是 Maven 项目,在 pom.xml 中添加 FastJSON 的依赖:

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

2. 基本用法示例

示例 JSON 数据

{"store": {"book": [{"category": "reference","author": "Nigel Rees","title": "Sayings of the Century","price": 8.95},{"category": "fiction","author": "Evelyn Waugh","title": "Sword of Honour","price": 12.99},{"category": "fiction","author": "Herman Melville","title": "Moby Dick","isbn": "0-553-21311-3","price": 8.99},{"category": "fiction","author": "J. R. R. Tolkien","title": "The Lord of the Rings","isbn": "0-395-19395-8","price": 22.99}],"bicycle": {"color": "red","price": 19.95}},"expensive": 10
}

2.1 获取单个节点的值

可以使用 JSONPath.eval 方法根据 JSONPath 表达式获取单个节点的值。例如,获取 store.bicycle.color 的值:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;public class FastJsonPathExample {public static void main(String[] args) {String jsonStr = "{...}"; // 上述示例 JSON 数据JSONObject jsonObject = JSON.parseObject(jsonStr);// 获取 store.bicycle.color 的值Object color = JSONPath.eval(jsonObject, "$.store.bicycle.color");System.out.println("Bicycle color: " + color);}
}

2.2 获取数组中的元素

可以通过索引获取数组中的特定元素。例如,获取 store.book 数组中的第一个元素:

// 获取 store.book 数组中的第一个元素
Object firstBook = JSONPath.eval(jsonObject, "$.store.book[0]");
System.out.println("First book: " + firstBook);

2.3 过滤数组元素

使用过滤表达式筛选数组中的元素。例如,获取价格低于 expensive 值的书籍:

// 获取价格低于 expensive 值的书籍
Object cheapBooks = JSONPath.eval(jsonObject, "$.store.book[?(@.price < $.expensive)]");
System.out.println("Cheap books: " + cheapBooks);

2.4 递归查找

使用递归通配符 .. 可以递归查找所有匹配的节点。例如,查找所有 author 字段的值:

// 查找所有 author 字段的值
Object allAuthors = JSONPath.eval(jsonObject, "$..author");
System.out.println("All authors: " + allAuthors);

3. 修改 JSON 数据

FastJSON 的 JSONPath 还支持修改 JSON 数据。例如,将 store.bicycle.color 的值修改为 blue

// 修改 store.bicycle.color 的值为 blue
JSONPath.set(jsonObject, "$.store.bicycle.color", "blue");
System.out.println("Modified JSON: " + jsonObject.toJSONString());

4. 总结

FastJSON 的 JSONPath 功能提供了强大而灵活的方式来处理 JSON 数据。通过使用不同的 JSONPath 表达式,你可以方便地定位、提取和修改 JSON 数据中的特定部分。在实际应用中,根据具体的 JSON 结构和需求,合理运用这些功能可以提高开发效率。需要注意的是,虽然 FastJSON 功能强大,但在使用时要关注其安全性,特别是在处理不可信的输入时。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++获取Windows系统的WIFI列表

之前写过一篇 Qt获取Windows系统的WIFI列表的文章,原理是通过cmd命令来实现的,现在发现直接调用Windows API会更简单,所以记录一下 Qt 获取WIFI列表:https://www.cnblogs.com/shiyixirui/p/17965357代码:#include <windows.h> #include <wlanapi.h> #include …

GPIO 接口工作原理

GPIO : GENERAL PURPOSE INPUT OUTPUT 通用输入输出端口是STM32的一些引脚,输出到---> led、蜂鸣器, 输入来自<--- 按键、ADC采样 通过总线读写寄存器,实现 IO口的控制。 寄存器(4种): 配置、数据、置位/复位、复用 GPIO工作原理: (1)输入 4种工作模式:上…

比知识蒸馏好用,田渊栋等提出连续概念混合,再度革新Transformer预训练框架

前言 本文,来自 Meta 等机构的研究者提出了一种新颖且高效的预训练框架:连续概念混合(Continuous Concept Mixing, CoCoMix),其将离散的下一个 token 预测与连续概念相结合。 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信…

使用 vxe-table 修改css默认样式,修改边框背景色,单元格默认高度详细说明

使用 vxe-table 修改css默认样式,修改边框背景色,单元格默认高度详细说明 由于项目的需求,可能需要对默认的表格样式就行修改覆盖,但是又不想影响到原有的功能,这时候就可以通过自带的 css 变量来修改样式,非常简单就能修改。 通过 css 变量可以非常灵活的实现局部修改,…

新能源电池生产借助ProfiNet转EtherNet/IP实战全解

一、案例背景在竞争激烈的新能源汽车行业中,电池作为核心部件,其生产质量直接决定了整车性能。在某新能源汽车电池生产线上,一套精密的生产流程正在有序运转。然而,一个不容忽视的问题出现了:生产线中采用EtherNet/IP协议的电池检测设备,与采用ProfiNet协议的生产线控制…

Oracle卸载安装问题

甲骨文数据库19c安装程序[INS-35075]已存在具有指定标识符的数据库实例。 解决: 第二步:运行regedit,选择HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE,按del键删除这个入口第三步:运行regedit,选择HKEY_LOCAL_MACHINE SYSTEM > CurrentControlSet > Services,滚…

Affinity Publisher 2.6.0 (macOS, Windows) - 页面布局和设计的强大平台

Affinity Publisher 2.6.0 (macOS, Windows) - 页面布局和设计的强大平台Affinity Publisher 2.6.0 (macOS, Windows) - 页面布局和设计的强大平台 Page layout & design powerhouse 请访问原文链接:https://sysin.org/blog/affinity-publisher/ 查看最新版。原创作品,转…

Affinity Photo 2.6.0 (macOS, Windows) - 梦寐以求的照片编辑器

Affinity Photo 2.6.0 (macOS, Windows) - 梦寐以求的照片编辑器Affinity Photo 2.6.0 (macOS, Windows) - 梦寐以求的照片编辑器 The photo editing software youve been dreaming of 请访问原文链接:https://sysin.org/blog/affinity-photo/ 查看最新版。原创作品,转载请保…

Affinity Designer 2.6.0 (macOS, Windows) - 制作最精美的插图和设计

Affinity Designer 2.6.0 (macOS, Windows) - 制作最精美的插图和设计Affinity Designer 2.6.0 (macOS, Windows) - 制作最精美的插图和设计 Illustration & graphic design software at its best 请访问原文链接:https://sysin.org/blog/affinity-designer/ 查看最新版。…

大模型硬件模型选型指南

大模型一体机行业内幕 DeepSeek大模型一体机特点:私有化部署、交付容易、价格低廉,适合内网IT改造和CIO们的创新选择,也是目前被疯抢的原因。 大模型一体机从功能上要分ABC三类:A类:主要是硬件就是机头+AI卡,组成的纯纯的AI硬件服务器。B类:在A类的技术上加上Deepseek模…

DeepSeek本地性能调优

对于本地模型的加载来说,除了使用KTransformer等工具进行指令集层面的优化之外,还可以调整模型加载层数,做一个简单的优化。这里提供了一个num_gpu和num_ctx参数调整的策略,实测Tokens性能最大可优化10倍左右。技术背景 大模型性能调优是一个很复杂的工程,涉及到很多细节,…

开箱即用!一条命令部署雷池WAF,安全从此“躺平”

作者:HACK之道Web应用已成为企业的核心入口,但随之而来的SQL注入、XSS攻击、爬虫窃密等问题层出不穷。传统WAF依赖规则库的被动防御模式,面对自动化工具和0day漏洞时显得捉襟见肘。长亭雷池WAF(SafeLine)凭借“动态防护”和“智能语义分析”两大核心技术,重新定义了Web应…