百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

fastjson(十)JSONPath 的使用(二)

suiw9 2024-11-17 15:51 37 浏览 0 评论

更多java文章与项目资源、毕业设计、福利

关注公众号 程序猿forever


要解析的 json:

Bash
{
  "store": {
    "book": [
      {
        "title": "高效Java",
        "price": 10
      },
      {
        "title": "研磨设计模式",
        "price": 12
      },
      {
        "title": "重构",
        "isbn": "553",
        "price": 8
      },
      {
        "title": "虚拟机",
        "isbn": "395",
        "price": 22
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19
    }
  }
}

测试类:

Bash
package json.fastjson.jsonpath;

import java.util.List;

import com.alibaba.fastjson.JSONPath;

public class TestJSONPath2 {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        String json = "{\"store\":{\"book\":[{\"title\":\"高效Java\",\"price\":10},{\"title\":\"研磨设计模式\",\"price\":12},{\"title\":\"重构\",\"isbn\":\"553\",\"price\":8},{\"title\":\"虚拟机\",\"isbn\":\"395\",\"price\":22}],\"bicycle\":{\"color\":\"red\",\"price\":19}}}";

        // 获取json中store下book下的所有title值
        List<Object> titles = (List<Object>) JSONPath.read(json, "$.store.book.title");
        System.out.println("$.store.book.title = " + titles);

        // 获取json中所有title的值
        titles = (List<Object>) JSONPath.read(json, "$..title");
        System.out.println("$..title = " + titles);

        // 获取json中book数组中包含isbn的所有值
        List<Object> isbns = (List<Object>) JSONPath.read(json, "$.store.book[?(@.isbn)]");
        System.out.println("$.store.book[?(@.isbn)] = " + isbns);

        // 获取json中book数组中price<10的所有值
        List<Object> prices = (List<Object>) JSONPath.read(json, "$.store.book[?(@.price < 10)]");
        System.out.println("$.store.book[?(@.price < 10)] = " + prices);

        // 获取json中book数组中的title等于“高效Java”的对象
        titles = (List<Object>) JSONPath.read(json, "$.store.book[?(@.title = '高效Java')]");
        System.out.println("$.store.book[?(@.title = '高效Java')] = " + titles);

        // 获取json中store下所有price的值
        prices = (List<Object>) JSONPath.read(json, "$.store..price");
        System.out.println("$.store..price = " + prices);

        // 获取json中book数组的前两个区间值
        List<Object> books = (List<Object>) JSONPath.read(json, "$.store.book[:2]");
        System.out.println("$.store.book[:2] = " + books);

        // 获取书个数
        int size = (int) JSONPath.read(json, "$.store.book.size()");
        System.out.println("$.store.book.size() = " + size);

    }

}

输出结果:

$.store.book.title = ["高效Java","研磨设计模式","重构","虚拟机"]
$..title = [高效Java, 研磨设计模式, 重构, 虚拟机]
$.store.book[?(@.isbn)] = [{"title":"重构","price":8,"isbn":"553"},{"title":"虚拟机","price":22,"isbn":"395"}]
$.store.book[?(@.price < 10)] = [{"title":"重构","price":8,"isbn":"553"}]
$.store.book[?(@.title = '高效Java')] = [{"title":"高效Java","price":10}]
$.store..price = [10, 12, 8, 22, 19]
$.store.book[:2] = [{"title":"高效Java","price":10}, {"title":"研磨设计模式","price":12}, {"title":"重构","price":8,"isbn":"553"}]
$.store.book.size() = 4

相关推荐

谁说 Vim 不好用?送你一个五彩斑斓的编辑器!

相信大家在使用各种各样强大的IDE写代码时都会注意到,代码中各种类型的关键字会用独特的颜色标记出来,然后形成一套语法高亮规则。这样不仅美观,而且方便代码的阅读。而在上古神器Vim中,我们通常看...

Python 基础教程 九之cron定时执行python脚本

前言在Linux或Unix系统中,你可以使用cron任务来定时执行Python脚本。cron是一个基于时间的作业调度器,允许你安排命令或脚本在系统上自动执行。...

RK3588主板Ubuntu 22.04固件刷机后需要进行哪些操作?

RK3588主板Ubuntu22.04固件刷机完成后,您需要进行以下操作:1、验证固件版本:确认您刷入的Ubuntu22.04固件版本是否正确,并且系统正常运行。...

Ubuntu16.04搭建VNC Server远程桌面服务器

1.前言本文主要讲解Ubuntu16.04怎么安装VNCServer远程桌面服务器。VNC全称为VirtualNetworkComputing(虚拟网络计算)是一种图形化桌面共享工具,允许...

开源&amp;Docker:何必nextcloud,新晋神级私人云盘,在线office编辑

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:可爱的小cherry前言大家好,这里是可爱的Cherry。...

Ubuntu系统,常用命令、IP配置等教程

Ubuntu系统常用命令与IP配置教程一、常用命令在Ubuntu系统中,掌握一些常用的命令对于日常操作非常重要,以下是常见的命令及其用法说明:1.ls—列出当前目录内容...

Ubuntu 24.10安装体验(ubuntu 20.04.1安装教程)

内核版本...

Zed编辑器:Rust之力,Linux之翼,VS Code劲敌新篇章

Zed是一款支持多人协作...

如何在Ubuntu系统中进行系统级的代理设置

Ubuntu系统级代理设置步骤详解在Ubuntu系统中进行系统级的代理设置是一种常见的网络配置方式,尤其适用于需要通过代理访问互联网的场景。通过配置代理,你可以让系统中的所有应用程序(如浏览器、终端、...

Linux Vim文本编辑器(linux用vi编辑文本)

在使用Linux操作系统的过程中,经常需要对文本文件进行操作,如新建、编辑等,常用的方法有以下几种:...

从零入门Linux(五)文本编辑器(linux好用的文本编辑器)

Linux系统提供了多种文本编辑器,每种编辑器都有其独特的功能和使用场景。以下按功能和复杂程度分类介绍:1.简单文本编辑器...

照片选择器,使用简单,几行代码就可以完成集成

照片选择器,使用简单,几行代码就可以完成集成来源:极客头条用于发表图片时候选择相册图片和拍照这样的需求,虽然网上也有很多类似的控件,写的挺不错的,但是深入使用就有些问题,还是自己写算了;网上的一些轮...

探索iOS 9适配(iphone适配)

CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿,或寻求《近匠》报道,请发送邮件至tang...

“旅行者”回望30载 一点淡蓝“焕新颜”

据美国国家航空航天局(NASA)网站12日报道,为纪念著名的“暗淡蓝点”(PaleBlueDot)照片问世30周年,NASA重新制作了这张照片,使其“焕新颜”,NASA喷气推进实验室于近日发布了新...

「底层技术原理体系」深入探索Java服务器性能监控Metrics框架

承接上文承接上文中的【深度挖掘Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析(Counter篇),我们知道和了解了对应的Counter计数器的作用...

取消回复欢迎 发表评论: