我希望使用 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/