我不清楚杰克逊如何处理绘图领域的资本化.如果有人可以提供帮助,我会很感激.
{"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"}:
Run Code Online (Sandbox Code Playgroud)
上面是我的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"])
Run Code Online (Sandbox Code Playgroud)
以上是我的例外,下面是我的班级......
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 …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring 4 MVC和Jackson 2进行我的服务.对于其中一个操作,我有一个请求对象,该对象具有一个属性,其中前导驼峰字的长度只有一个字母:
private String aLogId;
Run Code Online (Sandbox Code Playgroud)
这个类有适当命名的getter和setter:
public String getALogId() { return aLogId; }
public void setALogId(String aLogId) { this.aLogId = aLogId; }
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用相应的JSON属性向此服务发布请求时:
{"aLogId":"This is a log id"}
Run Code Online (Sandbox Code Playgroud)
我收到了来自Spring框架的500响应,说该字段无法识别,我的控制器类永远不会被调用:
无法读取JSON:无法识别的字段"aLogId"(类
但是,当我将"L"更改为小写时,请求按预期反序列化并且我的控制器类被命中:
{"alogId":"This is a log id"}
Run Code Online (Sandbox Code Playgroud)
为什么杰克逊期望"L"是小写的,因为它显然是该属性的驼峰案例约定中的第二个单词并且意图是大写的?是因为第一个单词只有一个字母长吗?
请求对象中还有其他属性,其中第一个单词不止一个字母,并且这些属性不会遇到与此情况不匹配相同的问题.