Я использую java для извлечения списка идентификаторов узлов из ответа запуска задач эластичного поиска.
Ответ выглядит следующим образом
{
"nodes": {
"ZKUuxQZpRCCcJ0njBM1P0A": {
"name": "ZKUuxQZ",
"transport_address": "127.0.0.1:9300",
"host": "127.0.0.1",
"ip": "127.0.0.1:9300",
"roles": [
"master",
"data",
"ingest"
],
"tasks": {
"ZKUuxQZpRCCcJ0njBM1P0A:118": {
"node": "ZKUuxQZpRCCcJ0njBM1P0A",
"id": 118,
"type": "transport",
"action": "indices:data/write/delete/byquery",
"start_time_in_millis": 1527808643421,
"running_time_in_nanos": 154234724059,
"cancellable": true,
"headers": {}
}
}
}
}
}
В этомНапример, я хочу, чтобы точный ZKUuxQZpRCCcJ0njBM1P0A:118
.Может кто-нибудь дать мне пример, как извлечь эту информацию?
Вариант 1, java json parser.Я хотел написать класс ответа и разобрать строку json, но ZKUuxQZpRCCcJ0njBM1P0A:118
не в формате ключ: значение.Я не уверен, как извлечь его.
Вариант 2, используя регулярное выражение.Часть идентификатора узла также может иметь -
или _
.Может ли кто-нибудь предоставить аккуратное Java регулярное выражение?Пока что мое регулярное выражение [a-zA-Z0-9\-\_]+\:[0-9]+
, я не уверен, достаточно ли это безопасно.
Спасибо.