2015-06-22 72 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()))); 
相关问题