2017-04-27 104 views
2

我希望使用POST從Web服務獲取JSON輸出。當我在本地主機上嘗試該程序時,它可以很好地工作,因爲輸出符合我的要求,但是當我上傳到Google App Engine時,我會嘗試獲取輸出並且順序相反。從GAEJSON輸出序列

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

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

輸出期望輸出

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(); 
    } 
} 

代碼用於產生輸出。

預先感謝幫助指出錯誤的每位用戶。

+0

我不認爲序列會影響JSON的處理。 –

+0

嗨。 @SachinGupta有沒有辦法維護JSON的序列?由於序列對我來說非常重要。 –

+0

查看該回答的那個部分 –

回答

4

爲了保持輸出順序,您應該使用LinkedHashMap。因爲HashMap不維護鍵或值的排序。但LinkedHashMap保留了插入順序。

嘗試將您的代碼更改爲LinkedHashMap,那麼它應該工作。

+0

嗨。 @SachinGupta。感謝您的回答。有用。由於我在5分鐘內無法接受答案,我稍後會接受。 –