import
java
.
io
.
BufferedReader
;
import
java
.
io
.
FileNotFoundException
;
import
java
.
io
.
FileReader
;
import
java
.
util
.
Iterator
;
import
java
.
util
.
List
;
import
java
.
util
.
Map
;
import
net
.
minidev
.
json
.
JSONArray
;
import
com
.
jayway
.
jsonpath
.
Configuration
;
import
com
.
jayway
.
jsonpath
.
JsonPath
;
import
com
.
jayway
.
jsonpath
.
ReadContext
;
public
class
TestJsonPath
{
public
static
void
main
(
String
[
]
args
)
{
String sjson
=
readtxt
(
)
;
print("--------------------------------------getJsonValue0--------------------------------------");
getJsonValue0(sjson);
print("--------------------------------------getJsonValue1--------------------------------------");
getJsonValue1(sjson);
print("--------------------------------------getJsonValue2--------------------------------------");
getJsonValue2(sjson);
print("--------------------------------------getJsonValue3--------------------------------------");
getJsonValue3(sjson);
print("--------------------------------------getJsonValue4--------------------------------------");
getJsonValue4(sjson);
print
(
"--------------------------------------getJsonValue--------------------------------------"
)
;
getJsonValue
(
sjson
)
;
private
static
String
readtxt
(
)
{
StringBuilder sb
=
new
StringBuilder
(
)
;
try
{
FileReader fr
=
new
FileReader
(
"D:/workspace/PressureTest/json.txt"
)
;
BufferedReader bfd
=
new
BufferedReader
(
fr
)
;
String s
=
""
;
while
(
(
s
=
bfd
.
readLine
(
)
)
!=
null
)
{
sb
.
append
(
s
)
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
)
;
System
.
out
.
println
(
sb
.
toString
(
)
)
;
return
sb
.
toString
(
)
;
private
static
void
getJsonValue
(
String json
)
{
List
<
String
>
authors1
=
JsonPath
.
read
(
json
,
"$.store.book[*].author"
)
;
List
<
String
>
authors2
=
JsonPath
.
read
(
json
,
"$..author"
)
;
List
<
Object
>
authors3
=
JsonPath
.
read
(
json
,
"$.store.*"
)
;
List
<
Object
>
authors4
=
JsonPath
.
read
(
json
,
"$.store..price"
)
;
List
<
Object
>
authors5
=
JsonPath
.
read
(
json
,
"$..book[2]"
)
;
List
<
Object
>
authors6
=
JsonPath
.
read
(
json
,
"$..book[0,1]"
)
;
List
<
Object
>
authors7
=
JsonPath
.
read
(
json
,
"$..book[:2]"
)
;
List
<
Object
>
authors8
=
JsonPath
.
read
(
json
,
"$..book[1:2]"
)
;
List
<
Object
>
authors9
=
JsonPath
.
read
(
json
,
"$..book[-2:]"
)
;
List
<
Object
>
authors10
=
JsonPath
.
read
(
json
,
"$..book[2:]"
)
;
List
<
Object
>
authors11
=
JsonPath
.
read
(
json
,
"$..book[?(@.isbn)]"
)
;
List
<
Object
>
authors12
=
JsonPath
.
read
(
json
,
"$.store.book[?(@.price < 10)]"
)
;
List
<
Object
>
authors13
=
JsonPath
.
read
(
json
,
"$..book[?(@.price <= $['expensive'])]"
)
;
List
<
Object
>
authors14
=
JsonPath
.
read
(
json
,
"$..book[?(@.author =~ /.*REES/i)]"
)
;
List
<
Object
>
authors15
=
JsonPath
.
read
(
json
,
"$..*"
)
;
List
<
Object
>
authors16
=
JsonPath
.
read
(
json
,
"$..book.length()"
)
;
print
(
"**************authors1**************"
)
;
print
(
authors1
)
;
print
(
"**************authors2**************"
)
;
print
(
authors2
)
;
print
(
"**************authors3**************"
)
;
printOb
(
authors3
)
;
print
(
"**************authors4**************"
)
;
printOb
(
authors4
)
;
print
(
"**************authors5**************"
)
;
printOb
(
authors5
)
;
print
(
"**************authors6**************"
)
;
printOb
(
authors6
)
;
print
(
"**************authors7**************"
)
;
printOb
(
authors7
)
;
print
(
"**************authors8**************"
)
;
printOb
(
authors8
)
;
print
(
"**************authors9**************"
)
;
printOb
(
authors9
)
;
print
(
"**************authors10**************"
)
;
printOb
(
authors10
)
;
print
(
"**************authors11**************"
)
;
printOb
(
authors11
)
;
print
(
"**************authors12**************"
)
;
printOb
(
authors12
)
;
print
(
"**************authors13**************"
)
;
printOb
(
authors13
)
;
print
(
"**************authors14**************"
)
;
printOb
(
authors14
)
;
print
(
"**************authors15**************"
)
;
printOb
(
authors15
)
;
print
(
"**************authors16**************"
)
;
printOb
(
authors16
)
;
* 读取json的一种写法,得到匹配表达式的所有值
private
static
void
getJsonValue0
(
String json
)
{
List
<
String
>
authors
=
JsonPath
.
read
(
json
,
"$.store.book[*].author"
)
;
print
(
authors
)
;
* 读取json的一种写法,得到某个具体值
private
static
void
getJsonValue1
(
String json
)
{
Object document
=
Configuration
.
defaultConfiguration
(
)
.
jsonProvider
(
)
.
parse
(
json
)
;
String author0
=
JsonPath
.
read
(
document
,
"$.store.book[0].author"
)
;
String author1
=
JsonPath
.
read
(
document
,
"$.store.book[1].author"
)
;
print
(
author0
)
;
print
(
author1
)
;
* 读取json的一种写法
private
static
void
getJsonValue2
(
String json
)
{
ReadContext ctx
=
JsonPath
.
parse
(
json
)
;
List
<
String
>
authorsOfBooksWithISBN
=
ctx
.
read
(
"$.store.book[?(@.isbn)].author"
)
;
List
<
Map
<
String
,
Object
>
>
expensiveBooks
=
JsonPath
.
using
(
Configuration
.
defaultConfiguration
(
)
)
.
parse
(
json
)
.
read
(
"$.store.book[?(@.price > 10)]"
,
List
.
class
)
;
print
(
authorsOfBooksWithISBN
)
;
print
(
"****************Map****************"
)
;
printListMap
(
expensiveBooks
)
;
*读取json的一种写法
*得到的值是一个String,所以不能用List存储
private
static
void
getJsonValue3
(
String json
)
{
String author
=
JsonPath
.
parse
(
json
)
.
read
(
"$.store.book[0].author"
)
;
print
(
author
)
;
*读取json的一种写法
*支持逻辑表达式,&&和||
private
static
void
getJsonValue4
(
String json
)
{
List
<
Map
<
String
,
Object
>
>
books1
=
JsonPath
.
parse
(
json
)
.
read
(
"$.store.book[?(@.price < 10 && @.category == 'fiction')]"
)
;
List
<
Map
<
String
,
Object
>
>
books2
=
JsonPath
.
parse
(
json
)
.
read
(
"$.store.book[?(@.category == 'reference' || @.price > 10)]"
)
;
print
(
"****************books1****************"
)
;
printListMap
(
books1
)
;
print
(
"****************books2****************"
)
;
printListMap
(
books1
)
;
private
static
void
print
(
List
<
String
>
list
)
{
for
(
Iterator
<
String
>
it
=
list
.
iterator
(
)
;
it
.
hasNext
(
)
;
)
{
System
.
out
.
println
(
it
.
next
(
)
)
;
private
static
void
printOb
(
List
<
Object
>
list
)
{
for
(
Iterator
<
Object
>
it
=
list
.
iterator
(
)
;
it
.
hasNext
(
)
;
)
{
print
(
"****"
)
;
System
.
out
.
println
(
it
.
next
(
)
)
;
private
static
void
printListMap
(
List
<
Map
<
String
,
Object
>
>
list
)
{
for
(
Iterator
<
Map
<
String
,
Object
>
>
it
=
list
.
iterator
(
)
;
it
.
hasNext
(
)
;
)
{
Map
<
String
,
Object
>
map
=
it
.
next
(
)
;
print
(
"****"
)
;
for
(
Iterator iterator
=
map
.
entrySet
(
)
.
iterator
(
)
;
iterator
.
hasNext
(
)
;
)
{
System
.
out
.
println
(
iterator
.
next
(
)
)
;
private
static
void
print
(
String s
)
{
System
.
out
.
println
(
s
)
;
参考文章:
使用jsonpath解析json内容
Java 使用 jsonpath 解析 json 的内容package com.jsonpath;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.util.Iterator;import java.util.List;import java.util.Map;import net.minidev.json.JSONArray;
<groupId>com.jayway.
jsonpath
</groupId>
<artifactId>
json
-path</artifactId>
<version>2.2.0</version>
</dependency>
2、封装类
import com.jayway.
jsonpath
.Configuration;
import com.
视频及游戏管理平台是一个很好的项目,结合了后端(Spring Boot)和前端(Vue.js)技术,实现了前后端分离。
视频及游戏管理平台是一个很好的项目,结合了后端(Spring Boot)和前端(Vue.js)技术,实现了前后端分离。
视频及游戏管理平台是一个很好的项目,结合了后端(Spring Boot)和前端(Vue.js)技术,实现了前后端分离。
视频及游戏管理平台是一个很好的项目,结合了后端(Spring Boot)和前端(Vue.js)技术,实现了前后端分离。
视频及游戏管理平台是一个很好的项目,结合了后端(Spring Boot)和前端(Vue.js)技术,实现了前后端分离。
视频及游戏管理平台是一个很好的项目,结合了后端(Spring Boot)和前端(Vue.js)技术,实现了前后端分离。
好的,关于
使用
jsonPath
解析
json
的问题,我可以回答你。
jsonPath
是一种用于查询
Json
数据的语言,类似于XPath用于xml,它可以快速定位到
json
数据中特定的节点,从而方便进行操作。
在
Java
中,我们可以
使用
JsonPath
库来
解析
json
数据。首先,需要添加
jsonPath
库的依赖,例如
使用
Maven的话,可以在pom.xml文件中加入以下代码:
```xml
<dependency>
<groupId>com.jayway.
jsonpath
</groupId>
<artifactId>
json
-path</artifactId>
<version>2.4.0</version>
</dependency>
然后,在
Java
代码中,我们可以
使用
以下代码来
解析
json
数据:
```
java
String
json
= "{\"name\":\"John\",\"age\":30,\"cars\":[ \"Ford\", \"BMW\", \"Fiat\" ]}";
JSON
Object
json
Object = new
JSON
Object(
json
); // 先将
json
字符串转为
JSON
Object对象
String name =
json
Object.getString("name"); // 获取name字段的值
int age =
json
Object.getInt("age"); // 获取age字段的值
JSON
Array cars =
json
Object.get
JSON
Array("cars"); // 获取cars字段的值,这是一个
JSON
Array对象
String firstCar = cars.getString(0); // 获取cars数组中第一个元素的值
System.out.println(name);
System.out.println(age);
System.out.println(firstCar);
此外,
使用
JsonPath
库,我们也可以通过以下代码来获取
json
数据中特定的节点:
```
java
String
json
= "{\"name\":\"John\",\"age\":30,\"cars\":[ \"Ford\", \"BMW\", \"Fiat\" ]}";
Object document = Configuration.defaultConfiguration().
json
Provider().parse(
json
);
String name =
JsonPath
.read(document, "$.name"); // 获取name字段的值
int age =
JsonPath
.read(document, "$.age"); // 获取age字段的值
String firstCar =
JsonPath
.read(document, "$.cars[0]"); // 获取cars数组中第一个元素的值
System.out.println(name);
System.out.println(age);
System.out.println(firstCar);
希望我的回答能帮助到你。