2013-03-08 1 views
18

Non sono chiaro in che modo Jackson si occupa della maiuscola nei campi di mappatura. Se qualcuno potesse aiutare lo apprezzerei.Capitalizzazione di mappatura dei campi di Jackson JSON?

{"user":{"username":"[email protected]","password":"pwd","sendercompid":"COMPID","service":{"host":"address","port":6666,"service":"S1","serviceAsString":"s1"}},"MDReqID":"ghost30022","NoRelatedSym":1,"Symbol":["GOOG"],"MarketDepth":"0","NoMDEntryTypes":3,"MDEntryType":["0","1","2"],"SubscriptionRequestType":"1","AggregatedBook":"N"}: 

sopra è la mia JSON, qui di seguito è il mio eccezione ...

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "MDReqID" (class com.myco.qa.fixrest.MarketDataRequest), not marked as ignorable (10 known properties: , "mdreqID", "marketDepth", "user", "subscriptionRequestType", "aggregatedBook", "mdentryType", "symbol", "mdupdateType", "noRelatedSym", "noMDEntryTypes"]) 

sopra è la mia eccezione, qui di seguito è la mia classe ...

public class MarketDataRequest { 
    private User user; 
    private String MDReqID; 
    private char SubscriptionRequestType; 
    private int MarketDepth; 
    private int MDUpdateType; 
    private char AggregatedBook; 
    private int NoMDEntryTypes; 
    private ArrayList<Character> MDEntryType; 
    private int NoRelatedSym; 
    private ArrayList<String> Symbol; 

    public User getUser() { 
     return user; 
    } 

    public void setUser(User user) { 
     this.user = user; 
    } 

    public String getMDReqID() { 
     return MDReqID; 
    } 

    public void setMDReqID(String MDReqID) { 
     this.MDReqID = MDReqID; 
    } 

    public char getSubscriptionRequestType() { 
     return SubscriptionRequestType; 
    } 

    public void setSubscriptionRequestType(char subscriptionRequestType) { 
     SubscriptionRequestType = subscriptionRequestType; 
    } 

... et cetera

risposta

50

Poiché il metodo del setter è denominato setMDReqID(…) Jackson assume che la variabile sia denominata mDReqID a causa del namin Java g convenzioni (le variabili dovrebbero iniziare con lettere minuscole). Se vuoi davvero una lettera maiuscola usa il @JsonProperty annotation sul setter (o - per la serializzazione - sul getter) in questo modo: @JsonProperty("MDReqID").

+4

Muchos gracias amigo. – shaz

3

Aggiungi @JsonProperty sul setter che corrisponde al nome della proprietà nella stringa Json ricevuta.

@JsonProperty("MDReqID") 
public String setMDReqID(String MDReqID) { 
     this.MDReqID = MDReqID; 
} 

Inoltre aggiungere @JsonProperty annotazione il getter e per l'output appaia nel formato tradizionale.

@JsonProperty("mDReqID") 
public void getMDReqID() { 
     return MDReqID; 
} 

Puoi nominare la tua variabile come preferisci.

private String mdReqID;