我目前正在尝试从泽西岛输出JSON地图。我以这种方式瞄准正常的对象:
map: { key1 : value1, key2: value2 }
然而,泽西选择了一种更令人困惑的方式:
"storage":
{"entry":[
{"key":"IRON","value":792},
{"key":"COPPER","value":2489},
{"key":"CARDBOARD","value":14536}
]
}
}
我设法使用JAXBElement将一些值映射到自定义地图:
@XmlRootElement
public class MapDTO<K, V> {
@XmlAnyElement
private List<JAXBElement<V>> elements = new ArrayList<>();
public MapDTO(){}
public MapDTO(Map<K,V> map) {
map.forEach((k, v) ->
elements.add(
new JAXBElement(new QName(k.toString()), v.getClass(), v))
);
}
}
但是由于某种原因,输出结果会产生一个key:Array,其中每个键都显示一个元素的数组:
"storage":{
"CIRCUITS":[3379992],
"CARDBOARD":[84838963545],
"COPPER_CABLE":[1673987]
}
任何人都知道为什么这样做或有没有办法做得更好?
我知道这已被问到before,但是接受的问题似乎是一个非解决方案,因为它无法编译,而其他解决方案似乎不起作用。由于这个问题超过一年,也许有人可以为这个问题带来新的亮点。