Konvertierung von JSON zu Enum-Typ mit @RequestBody

Ich habe einen master-enum-Klasse, die im wesentlichen eine Klassendefinition für eine Art von Objekt. Zum Beispiel ist es in etwa so aussieht wie das unten stehende Beispiel:

public enum ColorDefinition
{
     private String abbrev;
     private String color;
     private Class colorClass;
     RED("RD", "Red", Red.class),
     GREEN("GN", "Green", Green.class),
     BLUE("BL", "Blue", Blue.class)....
}

Ich versuche, eine post-Anforderung aus einem Javascript-Modell, dass sendet eine Zuordnung im Körper wie

{Rot : 255, Grün : 0, Blau: 0}

Um eine Feder gesteuert Endpunkt, der verwendet

@RequestMapping(value = "v1/color/EnableColors", method = RequestMethod.POST)
@ResponseBody
public ResponseObject enableColors(@RequestBody Map<ColorDefinition, Integer> colorMapping)

Denen bekomme ich folgende Fehlermeldung:

Kann nicht konstruieren, Karte Schlüssel ColorDefinition aus der Zeichenfolge "Rot": nicht eine gültige Darstellung: Kann nicht konstruieren, Karte Schlüssel ColorDefinition aus der Zeichenfolge "Rot": nicht einer der Werte für Enum-Klasse

Was mache ich hier falsch? Brauche ich eine andere Methode in der enum-Klasse, um richtig wandeln die eingehenden enum-Wert? Sollte es sein, mit einem anderen Wert aus der enum - (ich habe versucht, Sie ohne Erfolg)? Jede Hilfe ist willkommen, wie es scheint, sollte dies möglich sein, um automatisch konvertiert die ankommenden Werte, ich kann einfach nicht herausfinden!

  • Konntest du einen workaround finden? Ich habe ein ähnliches problem und weiß nicht, was zu tun ist..
InformationsquelleAutor Eddie D | 2013-07-01
Schreibe einen Kommentar