JsonPath —— JSON 解析神器

Posted 互联网后端架构

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JsonPath —— JSON 解析神器相关的知识,希望对你有一定的参考价值。

真乃神器也,再复杂的 Json 都能给你解析出来,非常方便的获取 JSON 的内容,很强大!

语法简介

JsonPath 描述
$ 根节点
@ 当前节点
.or[] 子节点
.. 选择所有符合条件的节点
* 所有节点
[] 迭代器标示,如数组下标
[,] 支持迭代器中做多选
[start:end:step] 数组切片运算符
?() 支持过滤操作
() 支持表达式计算

JSON 值:

导包:import com.jayway.jsonpath.JsonPath

解析代码:



3

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

//输出book[0]的author值

String author = JsonPath.read(json, "$.store.book[0].author");

System.out.println("author\t"+author);

//输出全部author的值,使用Iterator迭代

List<String> authors = JsonPath.read(json, "$.store.book[*].author");

System.out.println("authors\t"+authors);

//输出book[*]中category == 'reference'的book

List<Object> books = JsonPath.read(json, "$.store.book[?(@.category == 'reference')]");

System.out.println("books\t"+books);

//输出book[*]中category == 'reference'的book或者

List<Object> books2 = JsonPath.read(json, "$.store.book[?(@.category == 'reference' || @.price>10)]");

System.out.println("books2\t"+books2);

//输出book[*]中category == 'reference'的book的author

List<Object> books1 = JsonPath.read(json, "$.store.book[?(@.category == 'reference')].author");

System.out.println("books1\t"+books1);

//输出book[*]中price>10的book

List<Object> b1 = JsonPath.read(json, "$.store.book[?(@.price>10)]");

System.out.println("b1"+b1);

//输出book[*]中含有isbn元素的book

List<Object> b2 = JsonPath.read(json, "$.store.book[?(@.isbn)]");

System.out.println("b2"+b2);

//输出该json中所有price的值

List<Double> prices = JsonPath.read(json, "$..price");

System.out.println("prices"+prices);

//输出该json中所有title的值

List<Double> title = JsonPath.read(json, "$..title");

System.out.println("title"+title);

//输出该json中book 0,1的值

List<Double> book01 = JsonPath.read(json, "$..book[0,1]");

System.out.println("book01"+book01);

/* //输出该json中book 0,1的值

List<Double> book012 = JsonPath.read(json, "$..book[-2:]");

System.out.println("book012"+book012);*/

//可以提前编辑一个路径,并多次使用它

JsonPath path = JsonPath.compile("$.store.book[*]");

List<Object> b3 = path.read(json);

System.out.println("path\t"+path+"\n"+b3);


用法比较简单,多使用几次就会使用了!


打赏(长按扫二维码)


以上是关于JsonPath —— JSON 解析神器的主要内容,如果未能解决你的问题,请参考以下文章

使用jsonpath解析json内容

使用 php jsonpath 解析 JSON

JSONPath中的表达式

python中jsonpath模块,解析多层嵌套的json数据

jsonpath解析

JSONPath 解析 JSON 完整内容详解