杰克逊:地图结果在服务器上工作不同

时间:2017-01-27 07:52:38

标签: java json hashmap jersey jackson

我使用的是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版本不同,它导致了这个问题。

我该如何解决?

0 个答案:

没有答案