Найдите ключи в JSON с регулярным выражением и поместите их в map в java

#java #json #dictionary #key #key-value

#java #json #словарь #Клавиша #ключ-значение

Вопрос:

У меня есть JSON из API, похожего на этот:

 {
  "something": "something",
  "example_1": true,
  "something2": "something",
  "example_2": false,
  "example_3": true
}
 

Я хочу поместить все ключи example_x с их значениями в map. Я предполагаю, что это возможно с помощью регулярных выражений, но я не знаю, как это сделать.

Я знаю, что example_d это будет регулярное выражение, но это все. Я не нашел никаких похожих вопросов, но, возможно, я использовал неправильные условия поиска.

Информация: я использую библиотеку org.json для получения объекта JSON, но я могу изменить ее на другую библиотеку, если она работает.

Любая помощь будет оценена

Комментарии:

1. Пожалуйста, покажите код, который у вас есть на данный момент.

2. Как я уже сказал, я понятия не имею, как правильно решить проблему, и из-за этого нет кода. Я бы знал, как это сделать, но я думаю, что это действительно неоптимизировано: цикл for, который проверяет с помощью jsonobject.has(), содержит ли он example_i, и если да, добавляет ключ и значение на карту, пока не сможет найти следующий

3. Вы проанализировали JSON в JSONObject? Затем выполните итерацию по полям, проверяя, соответствуют ли имена вашему шаблону.

4. Хорошо, я посмотрю это, спасибо!

Ответ №1:

Получилось так: (Спасибо tgdavies за то, что посоветовали мне использовать итератор)

 //jsonObject is the json in the question for example
HashMap Map<String, Boolean> = new HashMap<>();

Iterator<String> keys = jsonObject.keys();
while (keys.hasNext()) {
    String key = keys.next();
    if (key.matches("example_\d ")) {
        Map.put(key, jsonObject.getBoolean(key));
    }
}