starałem się używać Jackson napisać wartość klasy do formatu JSON, który ma Opcjonalnie jako dziedzinach:Korzystanie Jackson ObjectMapper z Java 8 Wartości opcjonalne
public class Test {
Optional<String> field = Optional.of("hello, world!");
public Optional<String> getField() {
return field;
}
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(new Test()));
}
}
Po wykonaniu tej klasy generuje następujący wynik:
{"field":{"present":true}}
Rozumiem, że obecne/nieobecne pole jest zawarte i może obejść go podczas odczytu danych JSON, jednak nie mogę obejść faktu, że rzeczywista zawartość opcjonalna nigdy nie jest zapisywana na wyjściu. :(
żadnego obejścia tutaj wyjątkiem nie używając ObjectMapper
opcjonalne nie są przeznaczone do stosowania jako pola (lub właściwości, o to chodzi). Powinny być używane tylko jako wartości zwracane. – zeroflagL
@zeroflagL Czy mógłbyś podać jakieś wiarygodne źródła opisujące, co Optional ma być? – Jonas
@ Jonas [ta odpowiedź] (http://stackoverflow.com/questions/26327957/should-java-8-getters-return-optional-type/26328555#26328555) np .: _Naszą intencją było zapewnienie ograniczonego mechanizmu dla biblioteki metody zwracania typów, w których musi istnieć wyraźny sposób przedstawienia "brak wyniku" _. Również niewprowadzanie 'Serializable' jest całkiem oczywiste. – zeroflagL