我使用的是jackson,我有一个bean,它包含Map变量。这是我的setter方法:
Map<String, Integer> timeoutMap = new HashMap<>();
Iterator<JsonNode> dataIterator = response.get("data").iterator();
while(dataIterator.hasNext()){
JsonNode data = dataIterator.next();
String key = getValueAsString(data, "name");
int value = getValueAsInteger(data, "timeout");
if(!StringUtil.isNothing(key) && value > 0)
timeoutMap.put(key, value);
}
TimeoutInfo timeoutInfo = new TimeoutInfo();
timeoutInfo.setTimeoutMap(timeoutMap);
我的TimeoutInfo bean:
public class TimeoutInfo extends FrameworkResponse {
public TimeoutInfo() {
super(Constants.MODULE_CODE_COMMON);
}
private Map<String, Integer> timeoutMap;
public Map<String, Integer> getTimeoutMap() {
return timeoutMap;
}
public void setTimeoutMap(Map<String, Integer> timeoutMap) {
this.timeoutMap = timeoutMap;
}
}
当我在本地服务器上运行时,我的变量结果为
"timeoutMap": {
"Payment": 1000,
"Thankyou": 500,
"Profile": 1000
}
但是在服务器上工作的代码不同。当我从服务器调用它时,我的json结构正在改变:
"timeoutMap": {
"entry": [
{
"key": "Payment",
"value": 1000
},
{
"key": "Thankyou",
"value": 500
},
{
"key": "Profile",
"value": 1000
}
]
}
我的泽西和杰克逊版本:
<jersey-version>2.23.2</jersey-version>
<jackson-version>2.4.6</jackson-version>
我在我的web.xml中有这个:
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
我认为可能JVM版本不同,它导致了这个问题。
我该如何解决?