java - 在 Java 中订购一个新的 Gson().toJson()

标签 java android json string gson

此代码使用带有两个 List<String> 的 Map 里面 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);这个顺序是按字母顺序排列的吗?我可以任意订购吗?

最佳答案

乍一看,这似乎是预期的输出。由于 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 相同)。

关于java - 在 Java 中订购一个新的 Gson().toJson(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29628933/

相关文章:

Java Comparator 类对数组进行排序

Java:在运行时和编译时向类添加字段?

java - 无法让 JavaPNS 用于推送通知

android - 为什么我的 videoview 没有播放?

java - 使用双数组的最佳实践

json - 如何使用来自 Alamofire 的 JSON 数据填充表格 View ?

java - 操作成功/失败的返回 boolean 值是 Java 中的一个好习惯吗?

android - 使用 NavigationView 时如何更改子菜单标题的颜色 - Android

jquery - 将 Web 界面添加到嵌入式 QT 应用程序

jquery getJSON 回调函数未在 asp.net mvc jsonresult 上触发,但适用于 twitter json api