Как извлечь определенное значение на основе другого другого значения? - PullRequest
0 голосов
/ 24 февраля 2020

, поэтому я хочу иметь возможность извлекать и идентифицировать в зависимости от того, обладает ли этот объект определенным свойством. Мне нужно это сделать через Regex. Вот пример JSON, с которым я работаю:

{
"workspaceid": ws01,
"data": {
    "workspacetitle": "My Workspace"
},
"collections": {
    "projects": [{
        "id": 01,
        "data": {
            "title": "My Project 01",
            "enddateperiod": "2020-02-20T23:59:59",
            "profilecomplete": true,
            "synced": false
        },
        "lists": {
            "projectcode": [{
                "id": pcodered,
                "data": {
                    "code": "myproject123",
                    "name": "OffshoreProject"
                }
            }]
        }
    }, {
        "id": 02,
        "data": {
            "title": "My Project 02",
            "enddateperiod": "2020-02-20T23:59:59",
            "profilecomplete": false,
            "synced": false
        },
        "lists": {
            "projectcode": [{
                "id": pcodered,
                "data": {
                    "code": "myproject123",
                    "name": "OffshoreProject"
                }
            }]
        }
    }]
}}

Итак, я хочу извлечь идентификатор проекта, профиль которого не завершен ("profilecomplete": false). Поэтому в этом случае я хочу выбрать идентификатор Project 2 (который равен 02).

Как я могу сделать это через Regex? Мне удалось удалить все пробелы и новые строки, так что JSON по сути все одна длинная строка. Будет ли легче извлечь Regex, как это? В любом случае, я мог бы использовать некоторую справку о том, как получить этот идентификатор.

ПРИМЕЧАНИЕ. Формат JSON изменить нельзя.

1 Ответ

0 голосов
/ 24 февраля 2020

Это работает

/"id": ([^,]*?)(?=,[^{]*{[^}]*"profilecomplete": false)/

Пояснения:

  1. Сначала прочитайте все эти символы "id": [пробел]
  2. Затем прочитайте в группе символы, которые не являются ","
  3. И затем посмотрите вперед: вы ожидаете "," затем символы, которые не являются "{", затем "{"; и, наконец, перед соответствием закрывающему «}» вы хотите прочитать «profilecomplete»: false

Но я согласен, что парсер JSON был бы моим предпочтительным вариантом !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...