java - JSON 输出序列

标签 java json google-app-engine jakarta-ee jersey

我希望使用 POST 从 Web 服务获取 JSON 输出。当我在本地主机上尝试该程序时,它运行良好,输出满足我的要求,但是当我上传到 Google App Engine 时,我尝试获取输出,但顺序相反。

{
  "Data": {
    "token": "****"
  },
  "AppData": {
    "status": "success",
    "message": [
      ""
    ]
  }
}

GAE 的输出

{
    "AppData": {
        "status": "success",
        "message": [
        ""
        ]
    },
    "Data": {
        "token": "****"
    }
}

预期输出

public Response getSAppData(int id, String email, String password){
    Map<String, AppData> AppDataHM = new HashMap<>(); 
    Map<String, Data> DataHM1 = new HashMap<>();
    Map<String, List<String>> DataHM2 = new HashMap<>();
    HashMap<Object, Object> ADHMDHM = new HashMap<>();

    List<String> message = new ArrayList<>();
    Data data = DataHM.get(new AppDataRequest (id, email, password));
    List<String> data2 = new ArrayList<>();

    if(data != null){
        message.add("");
        AppDataHM.put("AppData", new AppData("success", message));
        DataHM1.put("Data", data);
        ADHMDHM.putAll(AppDataHM);
        ADHMDHM.putAll(DataHM1);
        String ADHMDHM1 = new Gson().toJson(ADHMDHM);
        return Response.status(200).entity(ADHMDHM1).build();
    }
    else{
        message.add("Your login information is invalid. Please try with the correct information");
        AppDataHM.put("AppData", new AppData("error", message));
        DataHM2.put("Data", data2);
        ADHMDHM.putAll(AppDataHM);
        ADHMDHM.putAll(DataHM2);
        String ADHMDHM2 = new Gson().toJson(ADHMDHM);
        return Response.status(200).entity(ADHMDHM2).build();
    }   
}

用于生成输出的代码。

提前感谢每一位帮助指出错误的用户。

最佳答案

为了保持输出的顺序,您应该使用LinkedHashMap。因为 HashMap 不维护键或值的排序。但 LinkedHashMap 保留插入顺序。

尝试将代码更改为LinkedHashMap,然后它应该可以工作。

关于java - JSON 输出序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43648364/

相关文章:

Java String Quicksort 偶尔有效?

java - 模板中的 Spring IOC 嵌套 bean 覆盖属性值

javascript - 更新 json 以显示 json 数组中的对象计数,而不是 Node 应用程序中的列表

python - 使用 cattrs 解构复杂的类

java - 我是否必须使用 CollectionResponse 作为 GAE Endpoints API 中的返回类型,或者我可以使用实体的 Java 集合?

java - 使用具有相同方法的两个接口(interface)实现多重继承

java - Java 的 SHA1 散列与 Perl 的不匹配

java - 如何将 JSON String 自定义反序列化为 Java Date?

java - Google App Engine : WARNING: failed Server@3d484a8a: java.net.BindException:地址已在使用中

python - 为什么要这样枚举呢?