Używam biblioteki jackson do serializowania/deserializacji do/z JSON. Potrzebuję, aby ten JSON miał najmniejszy rozmiar, więc włączam funkcję ALLOW_UNQUOTED_FIELD_NAMES, aby wyeliminować wszystkie cytaty. Wiem, że usuwanie cytatów nie jest standardowym jsonem, ale zrobienie JSON small jest ciężkim wymogiem projektu. Wygenerowany json działa, ale kiedy ja próbuje odczytać wartość json Dostaję wyjątek:ALLOW_UNQUOTED_FIELD_NAMES w bibliotece JONÓW JONÓW
org.codehaus.jackson.JsonParseException: Nieoczekiwany znak („9” (kod 57)): oczekiwał albo poprawnej nazwy znaków (dla niecytowanej nazwy) lub podwójnego cudzysłowu (dla kwotowanych), aby rozpocząć nazwę pola w [Źródło: [email protected]; Linia 1, kolumna: 3]
Wyjątkiem od powyżej jest generowany, kiedy odczytać ten json:
{90110a2e-febd-470f-afa4-cf7e890d31b9:0,eec652ad-a4d9-4eb1-8d24-7c1a0c29449f:1}
Sposób ją przeczytać jest:
Map<String, Object> valuesMap = oM.readValue(json, new TypeReference<Map<String, Object>>() {});
i przedmiot mapper Używam obu do odczytu i zapisu wartości:
private static final ObjectMapper om = new ObjectMapper();
static {
om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
om.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
om.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, true);
om.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
om.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
}
Używam wersji 1.6.3 z Jackson, zarówno w projektach nadawcy, jak i odbiorcy. Potrzebna wersja dla tej funkcji to 1.2+, więc pomyślałem, że może nie korzystam z tej wersji, ale mój odbiornik to aplikacja Spring i sprawdziłem, czy biblioteka zainstalowana w folderze libs to 1.6.3.
Co mogę zrobić źle? Może tej funkcji nie można używać z mapami.
Mam inne pytanie, Do tej pory po prostu wysyłam mapę, gdzie klucz jest po prostu wartością uuid, a wartość jest liczbą. Czy mogę mieć jakieś problemy, jeśli wyślę wartość ze znakami specjalnymi z włączoną funkcją ALLOW_UNQUOTED_FIELD_NAMES? Czy jackson uniknie tych postaci?
Dzięki.
Bardzo dobry punkt dotyczący Uśmiechu - może być zwarty, zwł. podczas włączania odnośników wstecznej wartości ciągu znaków (jeśli istnieje wiele powtarzających się wartości ciągów, takich jak wyliczone wartości) – StaxMan