#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));
}
}