2015-06-22 47 views
2

嗨,我有多維數組格式的數據。我需要將這些數據與basicnamevaluepair傳遞給POST方法。是否有可能將整個數組列表傳遞爲值在android中的單個鍵。是否有可能將Arraylist作爲值發送到BasicValuePair中的一個鍵android

ex: 
the arrayList is 

ArrayList<String> data=new ArrayList<String>(); 
data.add("Datas"); 
data.add("Datas2"); 
data.add("Datas3"); 

是否有可能像這樣傳遞arraylist。在ArrayList中使用BasicNameValuePair傳遞值。

List<BasicNameValuePair> pairedData=new ArrayList<BasicNameValuepair(); 
    pairedDatas.add(new BasicNameValuePair("id","8")); 
    pairedDatas.add(new BasicNameValuePair("name","Customer Details")); 
    pairedDatas.add(new BasicNameValuePair("datas",data); 
+0

您可以使用JsonArray。 – NehaK

+0

其實我正在使用內容類型作爲應用程序/ x-www-form-urlencoded.How可以更改爲這種形式的json –

+0

它取決於服務器端...例如,PHP可以採取類似於數據的東西[0] =數據和數據[1] = Datas2 ... AFAIK'x-www-form-urlencoded'不支持數組,因爲... **編輯:**當然,您可以使用json解決方案的波紋管...但是...然後它會更好地發送整個數據爲json ... – Selvin

回答

0

有沒有可能通過在basicnamevalue pair.the ArrayList中值我們唯一能做的this.Convert產品陣列jsonArray然後將其轉換爲字符串並在basicnamevaluepair中將其作爲字符串傳遞。在服務器端,我們需要使用jsondecode(其鍵的jsonarray爲字符串)解析字符串。

0

你不能添加BasicNameValuePair

List<BasicNameValuePair> pairedData=new ArrayList<BasicNameValuepair(); 
pairedDatas.add(new BasicNameValuePair("id","8")); 
pairedDatas.add(new BasicNameValuePair("name","Customer Details")); 

ArrayList<String> data=new ArrayList<String>(); 
data.add("Datas"); 
data.add("Datas2"); 
data.add("Datas3"); 
// you need to convert tha array to formatted String 
JSONArray jsArray = new JSONArray(data); 
pairedDatas.add(new BasicNameValuePair("datas",data.toString()); 
+0

這是非常古老的職位,這是你使用的Android版本,這將只適用於HTTP請求,如果你使用URL打開連接,你需要改變 – Sandy09

+0

Android 6.0,我面對同樣的問題,請幫助我。 org.json.JSONException:將在字符0處發生輸入結束。 –

+0

請張貼代碼,我可以檢查 – Sandy09

-1

你有TOI使用jsonArray發送ArrayList中,使用此代碼

JSONObject outerJsonObject ; 
      JSONArray _mainArray ; 
outerJsonObject = new JSONObject(); 
       _mainArray = new JSONArray(); 
    for (int i = 0; i < count; i++) { 

         JSONObject _jSubObj = new JSONObject(); 
         try { 

          _jSubObj.put("user_id",_userId); 
          _jSubObj.put("first_name",name.get(i)); 

           } 
          _mainArray.put(_jSubObj); 
         } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 

       try { 
        outerJsonObject.put("address_details",_mainArray); 


        //     System.out.println("OuterJSON request"+outerJsonObject); 
        //     System.out.println("JSON ARRAY : " + _mainArray); 
       } catch (JSONException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

在這個代號在我的位置數組列表。

和參數使用像

// Creating HTTP client 
        client = new DefaultHttpClient(); 

        // Creating HTTP Post 
        HttpPost httpPost = new HttpPost(WebServiceConstants 
          .getMethodUrl(WebServiceConstants.METHOD_ADD_ADDRESS)); 

        // Building post parameters, key and value pair 
        List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); 

        nameValuePair.add(new BasicNameValuePair("address_details", outerJsonObject.toString())); 


        System.out.println("Whole name value pair Address=" + nameValuePair.toString()); 

        // Url Encoding the POST parameters 
        try { 
         httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
        } catch (UnsupportedEncodingException e) { 
         // writing error to Log 
         e.printStackTrace(); 
        } 

        try { 
         responseMain = client.execute(httpPost); 
         //      Log.e("RESPONSe of My order", String.valueOf(responseMain)); 
         HttpEntity entitity = responseMain.getEntity(); 
         _responseMain = EntityUtils.toString(entitity); // content will be consume only once 
         System.out.println("Response of Address "+_responseMain); 
        } catch (Exception e) 
        { 
         e.printStackTrace(); 
        } 

我希望它是工作

0

從hare下載GSON庫 http://www.java2s.com/Code/Jar/g/Downloadgson222jar.htm和 在您的項目庫文件夾中添加庫。

試試這個代碼

List<storeData> list=new ArrayList<storeData>(); 
for(int i=1;i<10;i++){ 
    storeData("0"+i);} 
private void storeData(String s) 
{ 

    storeData objDetails = new storeData(s); 

    list.add(objDetails); 

} 

class storeData { 

    private String strNumber; 

    public storeData(String l) { 
     strNumber = l; 
    } 
} 
Gson gson = new Gson(); 
String jsonString = gson.toJson(list); // convert data to json 

List<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair("jsonval", jsonString)); // pass data to server 

注:在服務器端解析JSON數據以及將數據插入表中。您可以根據您的要求修改此代碼。

0

您可以在代碼中提到的名稱值對添加數組列表。只需通過.toString()方法將數組列表轉換爲字符串。 首先初始化字符串生成器。

StringBuilder TaskID= new StringBuilder(""); 
StringBuilder FFCheckListID= new StringBuilder(""); 
StringBuilder FFCheckListLineItemSNo= new StringBuilder(""); 
TaskID.append("taskid"); 
TaskID.append(","); 
FFCheckListID.append("id"); 
FFCheckListLineItemSNo.append("SNO"); 

,並添加StringBuilder的TO的ArrayList

0

我面對這種挑戰,我解決了這個辦法我的問題。

LinkedList<String> llistobj = new LinkedList<String>(); 
ArrayList<String> arraylist= new ArrayList<String>(); 
arraylist.add("material_id"); 
arraylist.add("1"); 
arraylist.add("amount"); 
arraylist.add("10"); 
arraylist.add("material_id"); 
arraylist.add("2"); 
arraylist.add("amount"); 
arraylist.add("20"); 
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(newBasicNameValuePair("materials_receive", 
Arrays.toString(llistobj.toArray()))); 
相關問題