Предположим, что у нас есть json как этот
{
"data": [
{
"id": "...",
"name": "...",
"participants": {
"data": [
{
"username": "...",
"id": "...",
"user_id": "..."
},
{
"username": "...",
"id": "...",
"user_id": "..."
}
]
},
"messages": {
"data": [
{
"id": "...",
"created_time": ...",
"message": "...",
"from": {
"username": "...",
"id": "...",
"user_id": "..."
},
"to": {
"data": [
{
"username": "...",
"id": "...",
"user_id": "..."
}
]
}
},
{
"id": "...",
"created_time": "...",
"message": "...",
"from": {
"username": "...",
"id": "...",
"user_id": "..."
},
"to": {
"data": [
{
"username": "...",
"id": "...",
"user_id": "..."
}
]
}
},
{
"id": "...",
"created_time": "...",
"message": "...",
"from": {
"username": "...",
"id": "...",
"user_id": "..."
},
"to": {
"data": [
{
"username": "...",
"id": "...",
"user_id": "..."
}
]
}
},
{
"id": "...",
"created_time": "...",
"message": "...",
"from": {
"username": "...",
"id": "...",
"user_id": "..."
},
"to": {
"data": [
{
"username": "...",
"id": "...",
"user_id": "..."
}
]
}
},
{
"id": "...",
"created_time": "...",
"message": "...",
"from": {
"username": "...",
"id": "...",
"user_id": "..."
},
"to": {
"data": [
{
"username": "...",
"id": "...",
"user_id": "..."
}
]
}
}],
"paging": {
"cursors": {
"after": "..."
},
"next": "https://host/v7.0/id/messages?access_token=...fields=id%2Ccreated_time%2Cmessage%2Cfrom%2Cto%2Cis_unsupported%2Cstory%2Cattachments%2Creactions%2Cshares%7Blink%7D&limit=25&after=ZAXlKamRYSnpiM0lpT2lJeU9UTTVNell5T0RnM05qQTFOakkyTmpReU1qRTBPVFV5TWpZAME1EWXdNVEE0T0NKOQZDZD"
}
}
}
],
"paging": {
"cursors": {
"after": "..."
},
"next": "https://host/v7.0/id/conversations?access_token=...&fields=id%2Cname%2Cparticipants%2Cmessages%7Bid%2Ccreated_time%2Cmessage%2Cfrom%2Cto%2Cis_unsupported%2Cstory%2Cattachments%2Creactions%2Cshares%7Blink%7D%7D%2Cupdated_time&platform=instagram&limit=1&after=ZAXlKMGFXMWxjM1JoYlhBaU9qRTFPVFkwTlRjME1qVXNJblJvY21WaFpBRjlwWkFDSTZAJak0wTURJNE1qTTJOamcwTVRjeE1ETXdNRGswT1RFeU9ERXlORGt4T0RRNE16SXdPVGd3TUNKOQZDZD"
}
}
Используемый java json библиотека путей
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
</dependency>
Во время процесса очистки эта строка json должна быть изменена.
...
JSONArray jsonPathNextUrl = jsonContext.read(NEXT_URL_JSON_PATH_REGEX);
...
if (isNotEmpty(jsonPathNextUrl)) {
for (int i = 0; i < jsonPathNextUrl.size(); i ++) {
String nextJsonPath = jsonPathNextUrl.get(i).toString();
final String nextUrl = rewritePaging(nextJsonPath, replacementUrl);
// jsonContext.set("$..next" + "[" + i + "]", nextUrl);
}
}
Моя проблема в том, что я не хочу измените все «следующее» значение с тем же значением в этом массиве JsonArray, но с разными.
Но jsonContext.set (... [i]) с указанным c элементом не работает.
У меня возникла идея использовать функциональность предиката json пути, подобную этому
jsonContext.read("$..[?(@.next)]")
, но он возвращает блок json вместо точного следующее значение, поэтому я не могу сравнить его с текущим искомым значением, полученным в процессе чтения. введите описание изображения здесь
Есть идеи, что делать? :)