如何在JSON中传递数组值?

时间:2018-09-05 09:50:03

标签: java android json

ArrayList<StylistArray>stylistsArr=new ArrayList<StylistArray>();
stylistsArr.add(new StylistArray("BqYWKWzs4r8SyGQvyqH2","18:30"));
stylistsArr.add(new StylistArray("at5kjx5FqIxbnMys8w4q","18:30"));
stylistsArr.add(new StylistArray("nFI5hxfIePx240dmqR0R","18:00"));
stylistsArr.add(new StylistArray("spxSj8UZem5uD0wL46EP","18:20"));

https://us-central.jshshskajshdala.net?dasa="+"2018-09-04"+"&ewsss="+"17:50"+"&stylist="+String.valueOf(stylistsArr) 

我想将此arrayList和URL一起传递。当我尝试传递数组值时,传递的是模型类的名称,而不是类中的值

示例
我想传递这样的值:

[
  {
    "stylist": "BqYWKWzs4r8SyGQvyqH2",
    "endTime": "18:30"
  },
  {
    "stylist": "at5kjx5FqIxbnMys8w4q",
    "endTime": "18:30"
  },
  {
    "stylist": "nFI5hxfIePx240dmqR0R",
    "endTime": "18:00"
  },
  {
    "stylist": "spxSj8UZem5uD0wL46EP",
    "endTime": "18:00"
  }
]

4 个答案:

答案 0 :(得分:3)

在gradle中添加Gson依赖项

implementation 'com.google.code.gson:gson:2.8.4'

并重建项目

String json= new Gson().toJson(stylistsArr);

现在,您的“ json”变量将具有一个json数组。

答案 1 :(得分:2)

就像@Mathan和@Cris一样,您可以简单地使用for循环来创建JSON字符串。对于以下简单的pojo:

public class StylistArray {
  // use a final so the value can't be change once the object is created.
  private final String stylist;
  private final String endTime;

  public StylistArray(String stylist, String endTime) {
    this.stylist = stylist;
    this.endTime = endTime;
  }

  public String getStylist() {
    return stylist;
  }

  public String getEndTime() {
    return endTime;
  }
}

您可以简单地执行以下操作:

List<StylistArray> list = new ArrayList<>();
// assume you have add all items to the list.

JSONArray jsonArray = new JSONArray();
try {
  // You need to use simple for loop instead the following foreach
  // because foreach is slower than traditional loop.
  for (StylistArray stylistArray : list) {
    // create JSON object for each item
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("stylist", stylistArray.getStylist());
    jsonObject.put("endTime", stylistArray.getEndTime());

    // append it to your JSON array.
    jsonArray.put(jsonObject);
  }
} catch (JSONException e) {
  e.printStackTrace();
  // Error happens, try to handle it.
}

然后您可以从JSONArray中获取字符串。我让你找出;)

答案 2 :(得分:0)

这是代码

List<Map<String, String>> values = new ArrayList<Map<String, String>>();
    Map<String, String> maps = new HashMap<>();
    maps.put("stylist", "BqYWKWzs4r8SyGQvyqH2");
    maps.put("endTime", "18:30");
    values.add(maps);
    maps.put("stylist", "at5kjx5FqIxbnMys8w4q");
    maps.put("endTime", "18:30");
    values.add(maps);
    maps.put("stylist", "nFI5hxfIePx240dmqR0R");
    maps.put("endTime", "18:00");
    values.add(maps);
    JSONArray mJSONArray = new JSONArray(values);

答案 3 :(得分:-1)

使用循环将是最好的选择,手动创建JSON,您可以为所需的字符串(造型师,endTime)分配希望准确赋予它们的值。