2012-11-01 7 views
16

In Prototyp-Kommunikation zwischen .NET-Desktop-Anwendung und Java-Server, REST mit JSON-Posts verwenden, stoße ich in eine Groß-und Kleinschreibung Problem. Die .NET-Objekte haben dort Eigenschaften in Pascal Casing (was für .NET herkömmlich ist), z. B. Symbol, EntryValue (usw.), während die Java-Darstellung des gleichen Objekts eine camel casing, z. symbol, entryValue.Kann GSON deserialize auf eine Groß-und Kleinschreibung deserialize

Der Server empfängt json Wert als:

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

Aber Gson deserialisieren nicht in Groß- und Kleinschreibung. Gibt es eine Möglichkeit, Gson dazu zu bringen?

Antwort

33

Verwenden Sie FieldNamingPolicy auf einem GsonBuilder, um Ihr Objekt zu erhalten. Ihr scheint mit UPPER_CAMEL_CASE übereinzustimmen.

Für alle Ausnahmen können Sie Ihr Klassenfeld mit einer @SerializedName Annotation annotieren.

+0

Super! Dies wurde leicht mit der UPPER_CAMEL_CASE-Richtlinie behoben. Haben Sie das in den Dokumenten gefunden? In meiner Eile, dies zu testen, war ich nicht in der Lage, Dokumente vollständig zu lesen, und schnelle Suchanfragen haben die Antwort nicht so deutlich aufgezeigt wie Sie. Vielen Dank! –

+0

@Sam Es ist weit unten auf der Seite im [Benutzerhandbuch] (https://sites.google.com/site/gson/gson-user-guide#TOC-JSON-Field-Naming-Support). Stellen Sie sicher, dass Sie in GsonBuilder herumstöbern, um alle Konfigurationen zu sehen, die Gson unterstützt! –

+0

@ Jeff Bowman Dies ist eigentlich keine gültige Lösung, da es nicht Groß-und Kleinschreibung nicht übereinstimmt. Es passt nur entweder zu dem, was in SerializedName definiert ist oder wenn es mit einem großen Buchstaben in Camel Casestil beginnt. Wenn es ein JSON gibt, das mit einem kleinen Buchstaben beginnt (ohne eine Annotation mit SerializedName), stimmt es nicht überein. – Bevor