2012-09-04 13 views
11

Come si può mappare automaticamente un oggetto JSON {"status" : "successful"} automaticamente su Java Enum in JAX-RS?Come mappare manualmente i campi Enum in JAX-RS

public enum Status { 
    SUCESSFUL ("successful"), 
    ERROR ("error"); 

    private String status; 

    private Status(String status) { 
     this.status = status; 
    } 
} 

Se avete bisogno di ulteriori informazioni non esitate a chiedere :)

risposta

12

I seguenti JAXB annotazioni dovrebbero farlo. (Ho provato usando Jettison ma non ho provato altri fornitori):

@XmlType(name = "status") 
@XmlEnum 
public enum Status { 
    @XmlEnumValue(value = "successful") 
    SUCESSFUL, 
    @XmlEnumValue(value = "error") 
    ERROR; 
} 
+0

Grazie per rispondere. Uso le funzioni standard JAX-RS e il server delle applicazioni decide quale implementazione verrà utilizzata. Nel mio caso è JBoss 7.1 e usa automaticamente jackson (credo). Sai se esiste un modo per forzare jBoss usando un altro provider? Oppure abilitare jBoss per usare 'XmlEnum' e' XmlEnumValue'? –

+0

È possibile che 'Jackson' si comporti in modo simile a Jettison rispetto alle annotazioni JAXB - Semplicemente non ho avuto il tempo di provarlo. BTW, se non fosse chiaro, le annotazioni sopra sono standard JAXB che dovrebbero essere seguite dalle implementazioni JAX-RS. –

+0

Sfortunatamente non funziona. Ma comunque lo scoprirò e lo posterò qui ... –

2

Questo potrebbe aiutare a

@Entity 
public class Process { 

    private State state; 

    public enum State { 
    RUNNING("running"), STOPPED("stopped"), PAUSED("paused"); 

    private String value; 

    private State(String value) { 
     this.value = value; 
    } 

    @JsonValue 
    public String getValue() { 
     return this.value; 
    } 

    @JsonCreator 
    public static State create(String val) { 
     State[] states = State.values(); 
     for (State state : states) { 
     if (state.getValue().equalsIgnoreCase(val)) { 
      return state; 
     } 
     } 
     return STOPPED; 
    } 
    } 
} 
Problemi correlati