У меня есть Json, который может выглядеть следующим образом:
{
"workshop_name" : "ABC"
"user_name" : "DEF"
}
В моем приложении workshop_name
не является обязательным, поэтому он может быть в минимальной версии:
{
"user_name" : "DEF"
}
Теперь ядумал об использовании Java8 Необязательно, чтобы получить workshop_name
из JSON.Я использовал библиотеку org.json и JSONObject
.Я мог легко проверить опционально, как это:
public static EnrichContext createEnricher(JSONObject json) {
EnrichContext enrichContext = new EnrichContext();
enrichContext.setWorkshopName(Optional.ofNullable(json.getString("workshop_name")).orElse("DEFAULT"));
enrichContext.setUserName(json.getString("user_name"));
}
Я был вынужден переключиться на GSON, где это выглядит немного по-другому.
json.get("workshop_name").getAsString();
Это означает, что у меня есть новый объект в середине после вызова get
в JsonObject (из GSON).
Я пытался использовать вложенную опциональную проверку, но она выглядит простослишком сложный.
То, что я понял:
enrichContext.setWorkshopName((Optional.ofNullable(json.get("workshop_name")).orElse(new JsonPrimitive("DEFAULT"))).getAsString());
Мне не нравится идея создания нового JsonPrimitive
при каждом чтении.Есть ли более оптимальный способ решения этой проблемы?