杰克逊JSON字段映射大写?

新手上路,请多包涵

我不清楚杰克逊如何处理映射字段中的资本化。如果有人可以提供帮助,我将不胜感激。

 {"user":{"username":"user@host.com","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;
    }

…等等

原文由 shaz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 445
2 个回答

由于您的 setter 方法被命名为 setMDReqID(…) Jackson 假定该变量被命名为 mDReqID 因为 Java _命名约定_(变量应以小写字母开头)。

如果你真的想要一个大写字母,请在 setter 上使用 @JsonProperty 注释(或者 - 对于序列化 - 在 getter 上),如下所示:

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

原文由 nutlike 发布,翻译遵循 CC BY-SA 4.0 许可协议

你也可以这样做

@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)

在类上将 JSON 消息中的所有属性名称大写

原文由 Marc Enschede 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题