2013-03-08 73 views
18

ジャックソンがマッピングフィールドで大文字をどのように扱うかはわかりません。誰かが助けてくれたら、私はそれを感謝します。上記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"}: 

以下、私のJSONある

以上
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"]) 

は、以下、私の例外では...私の例外であることは私のクラスは、エトセトラ... ...

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; 
    } 

です

答えて

50

セッターメソッドの名前がsetMDReqID(…)であるため、JacksonはJavaナミンのために変数の名前がmDReqIDであるとみなしますg慣習(変数は小文字で始まる必要があります)。大文字を実際に使用する場合は、@JsonProperty("MDReqID")のようにセッターに@JsonProperty annotationを使用してください(または、ゲッターのシリアル化の場合)。

+4

ムチョス・グラ​​シア・アミーゴ。 – shaz

3

受信したJson文字列のプロパティ名と一致するセッターに@JsonPropertyを追加します。

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

さらに、従来の形式で表示されるように、あなたの出力のためにもゲッターに@JsonProperty注釈を追加します。

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

任意の名前を自由に設定できます。

private String mdReqID; 
関連する問題