【问题标题】:JSON Output SequenceJSON 输出序列
【发布时间】:2017-09-24 16:37:44
【问题描述】:

我希望使用 POST 从 Web 服务获取 JSON 输出。当我在 localhost 上尝试该程序时,它运行良好,输出满足我的要求,但是当我上传到 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();
    }   
}

生成输出的代码。

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

【问题讨论】:

  • 我认为顺序不会影响 JSON 的处理。
  • 嗨。 @SachinGupta 有什么方法可以维护 JSON 的顺序吗?因为顺序对我来说真的很重要。
  • 检查答案部分
  • 谢谢@SachinGupta

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


【解决方案1】:

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

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

【讨论】:

  • 嗨。 @SachinGupta。感谢您的回答。有用。由于我无法在 5 分钟内接受答案,所以我稍后会接受。
猜你喜欢
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 2013-10-27
  • 2011-08-02
  • 1970-01-01
  • 2016-01-21
  • 2015-12-27
  • 2023-03-18
相关资源
最近更新 更多