2012-11-01 8 views
16

Podczas prototypowania komunikacji między aplikacją .NET na komputer i serwerem Java, używając usługi REST z postami JSON, pojawia się problem z rozróżnianiem wielkości liter. Obiekty .NET mają tam właściwości w Pascal Casing (co jest typowe dla .NET), np .: Symbol, EntryValue (itp.), Podczas gdy reprezentacja Java tego samego obiektu wykorzystuje obudowę wielbłąda, np. symbol, entryValue.Może deserializować GSON w sposób niewrażliwy na wielkość znaków

Serwer odbiera wartość json jako:

{"EntrySize":100,"Symbol":"AMZN"} 

Ale Gson nie deserializowania w przypadku niewrażliwe sposób. Czy jest jakiś sposób, aby Gson to zrobił? Aby uzyskać obiekt Gson, należy użyć

Odpowiedz

33

na. Twój wydaje się pasować do UPPER_CAMEL_CASE.

W przypadku wyjątków należy opatrzyć adnotację w polu klasy adnotacją @SerializedName.

+0

Awesome! Naprawiono to łatwo, stosując zasadę UPPER_CAMEL_CASE. Czy znaleźliście to w dokumentach? W moim pośpiechu, aby to przetestować, nie byłem w stanie w pełni przeczytać dokumentów, a szybkie wyszukiwania nie wskazywały na odpowiedź tak wyraźnie, jak ty. Dzięki! –

+0

@Sam Jest daleko w dole strony w [podręczniku użytkownika] (https://sites.google.com/site/gson/gson-user-guide#TOC-JSON-Field-Naming-Support). Upewnij się, że przeglądasz GsonBuilder, aby zobaczyć wszystkie konfiguracje obsługiwane przez Gson! –

+0

@Jeff Bowman To właściwie nie jest prawidłowe rozwiązanie, ponieważ NIE pasuje do wielkości liter. Dopasowuje tylko to, co jest zdefiniowane w SerializedName lub zaczyna się od dużej litery w stylu wielbłąda. Jeśli istnieje json, który zaczyna się małą literą (bez adnotacji SerializedName), nie będzie zgodny. – Bevor

Powiązane problemy