在Java中订购一个新的Gson()。toJson()

时间:2015-04-14 13:39:28

标签: java android json string gson

此代码使用带有两个List<String>的地图 在Map<String, List<?>>内 我需要获得一个带有此订单的输出 ttPrm,ttDet ,我得到的是 ttDet,ttPrm

这是我的代码

String parametroGSON ="";
try {
    Map<String, List<?>> mapa = new HashMap<String, List<?>>();
    mapa.put("ttPrm", listParam);
    mapa.put("ttDet", ListaArt);
    parametroGSON = new Gson().toJson(mapa);
} catch (Exception e) { }
System.out.println(json);

输出:

 {"ttDet":[{"dsArticulo":"PEPSI 500 X 12 PET"}],"ttPrm":[{"accion":"upd","cod_depo":"1"}]}

我需要这个输出

{"ttPrm":[{"accion":"upd","cod_depo":"1"}] ,"ttDet":[{"dsArticulo":"PEPSI 500 X 12 PET"}]}

如何获得此输出?这个新的Gson()。toJson(mapa);这个顺序是按字母顺序的?我可以有任意订单吗?

1 个答案:

答案 0 :(得分:2)

乍一看,这似乎是预期的产出。由于String类中的hashCode实现,ttDet位于ttPrm之前,因为它具有较小的hashCode。

使用LinkedHashMap可能有所帮助。尝试

String parametroGSON ="";
try {
  Map<String, List<?>> mapa = new LinkedHashMap<String, List<?>>();
  mapa.put("ttPrm", listParam);
  mapa.put("ttDet", ListaArt);
  parametroGSON = new Gson().toJson(mapa);
} catch (Exception e) { }
System.out.println(json);

代替。

根据具体要求,另一个地图可能有用,LinkedHashMap保持插入顺序(与LinkedHashSet相同)。