0

我正在使用 Jackson 将对象序列ArrayList化为MapJSON 格式。

我的问题是序列化 JSON 列表中的元素顺序与我在ArrayList.

我正在使用 Jackson 1.0.1(由于运行此代码的容器,我被迫使用这么旧的版本)。

这可能是杰克逊序列化的错误吗?

这是我的代码:

Map<String, Object> myObject = new HashMap<String,Object>();
List<Map<String, Object>> listOfMaps = new ArrayList<Map<String, Object>>();
// Omitting code that populates the list...    
myObject.put("MyList", listOfMaps)
Map<String, Object>> firstElement = listOfMaps.get(0);

// Jackson serialization below:
ObjectMapper mapper = new ObjectMapper();
StringWriter writer = new StringWriter();
mapper.writeValue(writer, myObject);

当我查看序列化的 JSON 时,我注意到一个不同的对象作为第一个元素出现。

任何建议表示赞赏...

4

1 回答 1

0

JavaHashMap实现不保证存储在其中的元素的顺序:

此类不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。

杰克逊不能奇迹般地在没有秩序的地方强加秩序。如果您希望按照将数据插入其中的顺序对地图进行序列化,请使用LinkedHashMap.

Map<String, Object> myObject = new LinkedHashMap<String,Object>();
于 2013-05-05T13:28:52.187 回答