Json schema patternProperties [дубликат]

Вот как я решил это в своем приложении. В идеале вы должны использовать StringBuilder вместо использования + для строк.

    String inParenthesis = "(?";
    for(int i = 1;i < myList.size();i++) {
      inParenthesis += ", ?";
    }
    inParenthesis += ")";

    try(PreparedStatement statement = SQLite.connection.prepareStatement(
        String.format("UPDATE table SET value='WINNER' WHERE startTime=? AND name=? AND traderIdx=? AND someValue IN %s", inParenthesis))) {
      int x = 1;
      statement.setLong(x++, race.startTime);
      statement.setString(x++, race.name);
      statement.setInt(x++, traderIdx);

      for(String str : race.betFair.winners) {
        statement.setString(x++, str);
      }

      int effected = statement.executeUpdate();
    }

Использование переменной типа x выше вместо конкретных чисел помогает много, если вы решите изменить запрос позже.

19
задан mkobit 21 October 2015 в 13:56
поделиться

2 ответа

Чтобы проверить строковое значение (не имя свойства) для RegEx, вы должны использовать ключевое слово "pattern":

{
    "type": "object",
    "properties": {
        "progBinaryName": {
            "type": "string",
            "pattern": "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$"
        }
    }
}

P.S. - если вы хотите, чтобы шаблон соответствовал клавише для свойства (а не значения), вы должны использовать "patternProperties" (это похоже на "properties", но клавиша - RegEx).

38
ответ дан cloudfeet 16 August 2018 в 02:19
поделиться
  • 1
    Возможно ли совпадение шаблонов с учетом регистра? – Ninja 10 July 2018 в 10:07

Синтаксис вашей схемы JSON неверен. Измените

"patternProperties": {
    "progBinaryName": "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$"
    }

на

"patternProperties": {
    "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$": {}
    }
11
ответ дан Lodewijk Bogaards 16 August 2018 в 02:19
поделиться
  • 1
    Спасибо за предоставление ответа и не трачу свое время. Очень, очень ценим! – Destroyer 22 May 2013 в 01:13
  • 2
    Разве не вопрос был о тестировании value , а не имени свойства? – cloudfeet 18 July 2013 в 13:30
  • 3
    Ты прав. Ваш ответ должен быть принят. – Lodewijk Bogaards 23 July 2013 в 09:52
  • 4
    @Destroyer вы можете согласиться с ответом cloudfleet? – Lodewijk Bogaards 23 July 2013 в 09:53
Другие вопросы по тегам:

Похожие вопросы: