JsonPath (JSON 解析神器)

来源:互联网 发布:mac上绘画软件 编辑:程序博客网 时间:2024/06/02 07:29

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

语法简介

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


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,        "isbn": "0-553-21311-3"      }    ],    "bicycle": {      "color": "red",      "price": 19.95    }  }}


导包:import com.jayway.jsonpath.JsonPath


解析代码:

//输出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'的bookList<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的authorList<Object> books1 = JsonPath.read(json, "$.store.book[?(@.category == 'reference')].author");System.out.println("books1\t"+books1);//输出book[*]中price>10的bookList<Object> b1 = JsonPath.read(json, "$.store.book[?(@.price>10)]");System.out.println("b1"+b1);//输出book[*]中含有isbn元素的bookList<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);

用法比较简单,多使用几次就会使用了!文章主要参考网上!


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 二年级成绩不好怎么办 初中学生数学差怎么办 孩子数学计算能力差怎么办 股票没有客户号怎么办 五岁宝宝鼻炎怎么办 孩子怕老师家长怎么办 孩子得了厌学症怎么办 幼儿不好好吃饭怎么办 孩子在学校胆小怎么办 孩子胆小没自信怎么办 特别倔强的学生怎么办 初中生注意力不集中怎么办 父母水平太低怎么办 父母不肯买电脑怎么办 与父母性格不合怎么办 父母和孩子吵架怎么办 如果有孩子离婚怎么办 离婚时成年孩子怎么办 父母离婚后孩子怎么办 父母吵架闹离婚怎么办 父母吵架后冷战怎么办 家里每天都吵架怎么办 夫妻因为钱吵架怎么办 离婚了很痛苦怎么办 身份证丢了怎么办离婚 和老婆离婚了怎么办 老婆跟前任联系怎么办 离异小孩上户口怎么办 离婚之后孩子户口怎么办 父母离婚孩子户口怎么办 夫妻离婚孩子户口怎么办 孩子有心理阴影怎么办 孩子心里有障碍怎么办 初中的孩子厌学怎么办 孩子抑郁了家长怎么办 大人得地图舌怎么办 孩子老挨欺负怎么办 工作做错了事情怎么办 父母和邻居吵架怎么办 父亲总是骂我怎么办 小孩依赖性太强怎么办