2

嗨,我有多维数组格式数据。我需要将这些数据与基本名称值对传递给 POST 方法。有没有可能将整个数组列表作为值传递给 android 中的单个键。

ex:
 the arrayList is 

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

是否可以像这样传递arraylist。使用BasicNameValuePair 在ArrayList 中传递值。

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);
4

6 回答 6

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());
于 2015-06-22T11:16:10.590 回答
0

在basicnamevalue对中不可能传递arraylist值。我们唯一可以这样做。将产品数组转换为jsonArray,然后将其转换为字符串并将其作为字符串传递给basicnamevaluepair。在服务器端,我们需要使用jsondecode解析字符串其键具有 jsonarray 作为字符串。

于 2015-07-09T08:46:16.133 回答
0

从 hare http://www.java2s.com/Code/Jar/g/Downloadgson222jar.htm下载 GSON 库, 并在您的项目 lib 文件夹中添加库。

试试这个代码

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 数据并将数据插入表中。您可以根据您的要求修改此代码。

于 2015-07-09T09:24:29.677 回答
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");

并将字符串生成器添加到数组列表

于 2017-08-15T09:28:41.193 回答
0

I was faced with this kind of challenge , I solved my issue with this way.

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())));
于 2017-09-16T12:17:46.313 回答
-1

你必须使用 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();
                }

在这个代号中是位于 i 位置的 arraylist。

和参数使用如

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

我希望它正在工作

于 2015-06-22T11:20:28.697 回答