2016-05-24 78 views
-1

創建我要送請求體在Http請求如下格式:JSON字符串格式錯誤

{ 
    "flag":false, 
    "Ids":["xyz","abc"] 
} 

我試圖像:

LinkedHashMap<String, Object> requestParamsMap = new LinkedHashMap<String, Object>(); 
    requestParamsMap.put("flag",false); 

    ArrayList<String> IdList = new ArrayList<>(); 
    IdList.add("xyz"); 
    IdList.add("abc"); 
    requestParamsMap.put("Ids", IdList.toString()); 

後來才知​​道是轉換requestParamsMap以JSON字符串。但我沒有獲得所需格式的請求主體。

我想創建一個通用的方法,它可以以這種格式返回數據,以便我可以在整個應用程序中使用它。

任何幫助將不勝感激.. !!!

+0

顯然,你需要使用一些JSON序列... LinkedHashMap.toString()將不會返回JSON自動的(既不ArrayList.toString( )將返回json數組) – Selvin

回答

0

做這樣的事情:

JSONObject object=new JSONObject(); 
    try { 
     object.put("flag","xyz"); 
     JSONArray array=new JSONArray(); 
     array.put("xyz"); 
     array.put("abc"); 

     object.put("Ids",array); 

     //added a log to see the output 
     Log.e("output",object.toString()); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

object.toString()應包含完全相同的字符串格式你想要的JSON。您可以使用循環來填充jsonArray或JSONObject的內容,具體取決於您擁有的項目數

0

儘管如此,您還是希望得到的輸出是另一個JSONObject中的JSONObject和JSONObject內部的JSONArray。所以,你可以單獨創建它們,然後可以放在一起。如下。

CODE

try { 
     JSONObject parent = new JSONObject(); 
     JSONObject jsonObject = new JSONObject(); 
     JSONArray jsonArray = new JSONArray(); 
     jsonArray.put("lv1"); 
     jsonArray.put("lv2"); 

     jsonObject.put("mk1", "mv1"); 
     jsonObject.put("mk2", jsonArray); 
     parent.put("root", jsonObject); 
     Log.d("output", parent.toString(2)); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

輸出

{ 
     "root": { 
     "mk1": "mv1", 
     "mk2": [ 
      "lv1", 
      "lv2" 
     ] 
     } 
    }