Jackson JSON 字段映射大小写? [英] Jackson JSON field mapping capitalization?
问题描述
我不清楚 jackson 如何处理映射字段中的大小写.如果有人可以提供帮助,我将不胜感激.
I'm not clear how jackson deals with capitalization in mapping fields. If anyone could help I'd appreciate it.
{"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,下面是我的例外...
Above is my json, below is my exception...
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"])
上面是我的例外,下面是我的班级...
Above is my exception, below is my class...
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;
}
...等等
推荐答案
因为你的 setter 方法被命名为 setMDReqID(…)
Jackson 假设变量被命名为 mDReqID
因为Java 命名约定(变量应以小写字母开头).
Since your setter method is named setMDReqID(…)
Jackson assumes the variable is named mDReqID
because of the Java naming conventions (variables should start with lower case letters).
如果您真的想要大写字母,请使用 @JsonProperty 注释在 setter(或 - 对于序列化 - 在 getter 上)像这样:
If you really want a capital letter use the @JsonProperty annotation on the setter (or - for serialization - on the getter) like this:
@JsonProperty("MDReqID")
public void setMDReqID(String MDReqID) {
this.MDReqID = MDReqID;
}
这篇关于Jackson JSON 字段映射大小写?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!