专栏名称: 互联网后端架构
主要介绍Java后端架构。其中也会掺杂一些前端、GO、Python、Linux,目标:全栈工程师!---好像很牛叉的样子 ^-^
目录
相关文章推荐
51好读  ›  专栏  ›  互联网后端架构

JsonPath —— JSON 解析神器

互联网后端架构  · 公众号  · 架构  · 2017-10-21 09:44

正文

请到「今天看啥」查看全文


真乃神器也,再复杂的 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 authors = JsonPath.read(json, "$.store.book[*].author");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

List b3 = path.read(json);

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


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


打赏(长按扫二维码)








请到「今天看啥」查看全文