我正在使用Volley向服务器发送数据,在这里,我无法找到在单个请求中一次发送字符串和数组的方法。
我可以发送数组:
Map<String, List<String>> jsonParams = new HashMap<>();
jsonParams.put("names", my_names_list);
我也可以像以下一样发送字符串:
Map<String, String> jsonParams = new HashMap<>();
jsonParams.put("user_id", userId);
但是如何一次发送两个?
像:
Map<String, String> jsonParams = new HashMap<>();
jsonParams.put("user_id", userId);
jsonParams.put("names", my_names_list); // here it is expecting String but I want to send array of strings to server
预期的JSON请求应该是:
{
"user_id": "1",
"names" : ["abc, "cdf", "efg"]
}
答案 0 :(得分:1)
我认为你可以将字符串和数组合并到一个json中,然后将json发送到server.Example
public class Member
{
private String name;
private List<String> skills;
//getter and setter at lower
}
使用GSON库将此模型类设为json。
Member mem = createjsonobject();
Gson gson=new Gson();
String json=gson.toJson(mem);
//Pass this json to the server and at server side you can seperate the string and array
private static Member createjsonObject()
{
Member member= new Member();
member.setName("Rishabh");
List<String> skill=new ArrayList<>();
skill.add("Java");
skill.add("C#");
skill.add("Android");
member.setSkills(skill);
return member;
}
答案 1 :(得分:0)
我解决了我的问题 -
protected Map<String, String> getParams() throws AuthFailureError {
JSONArray words_ar = new JSONArray();
for(int i=0;i<exercise.getWord_list().size();i++){
JSONObject word_ob = new JSONObject();
try {
word_ob.put("id",(i+1)+"");
word_ob.put("learn",exercise.getWord_list().get(i).getLearn_str());
word_ob.put("native",exercise.getWord_list().get(i).getNative_str());
words_ar.put(word_ob);
} catch (JSONException e) {
e.printStackTrace();
}
}
Map<String, String> params = new HashMap<>();
params.put("user", prefs.getUserId()+"");
params.put("title", exercise.getTitle());
params.put("words", words_ar+"");
return params;
}
答案 2 :(得分:0)
尝试使用自定义JSONObject。对于上面的示例请求,您可以创建一个JSON对象,如下所示
try {
String[] names = {"abc", "cdf", "efg"};
String userId = "user_id";
JSONArray jsonArray = new JSONArray();
for(String n : names) {
jsonArray.put(n);
}
JSONObject jsonParams = new JSONObject();
jsonParams.put("names", jsonArray);
jsonParams.put("userId", userId);
} catch (JSONException e) {
e.printStackTrace();
}
答案 3 :(得分:0)
尝试这个;将名称放在数组中:
CKRecord
for(int i = 0;i<yourArrayLength;i++){
params.put("names"+i, my_names_list[i]);