java - 使用响应列表获取数据 Retrofit/OkHttp
问题描述
我从 API 获取一些数据apiServices.getPromo
,您可以看到 url 如下所示,JSON 如下所示,
MainActivity.java
apiServices.getPromo(intentData.getStringExtra("event_id"),dataBooking.getString("total_buyer"),prefManager.getIdUser(),intentData.getStringExtra("ticket_id")).enqueue(new Callback<List<Promo>>() {
@Override
public void onResponse(@NonNull Call<List<Promo>> call, @NonNull Response<List<Promo>> response) {
if (response.isSuccessful()){
if (!response.body().isEmpty()){
List<Promo> jsonData = response.body();
Log.i("TESTER",""+jsonData);
}else{
Toast.makeText(PaymentActivity.this, "Maaf, belum ada promo yang tersedia.", Toast.LENGTH_SHORT).show();
}
ApiUrl.java
@FormUrlEncoded
@POST("promopublic")
Call<List<Promo>> getPromo(
@Field("id_event") String id_event,
@Field("total_buyer") String totalBuyer,
@Field("id_user") String id_user,
@Field("id_ticket") String id_ticket);
使用看起来像这样的 POJO,
促销.java
public class Promo {
@SerializedName("id_promo")
private String id_promo;
@SerializedName("promo_name")
private String promo_name;
@SerializedName("promo_type")
private String promo_type;
@SerializedName("value_based")
private String value_based;
@SerializedName("quota")
private String quota;
@SerializedName("id_event")
private String id_event;
@SerializedName("description")
private String description;
public String getId_promo() {
return id_promo;
}
public void setId_promo(String id_promo) {
this.id_promo = id_promo;
}
public String getPromo_name() {
return promo_name;
}
解决方案
没关系,这是我使用的技巧
List<Promo> jsonData = response.body();
Log.i("TESTER",""+jsonData);
String name = jsonData.get(0).getPromo_name();
Log.i("TESTER",""+name);
推荐阅读
- java - 使用openCV java检测视频场景变化
- lnk2019 - LNK2019 在编译 Agora.IO windows 示例时
- vega-lite - Vega Lite 按基于另一列的特定属性分组
- python - Python:ImportError:无法导入名为的模块
- python - Numpy dot 返回不同的值
- css - 如何将元素缩放到最大可能的视图区域?
- javascript - 父集合中的空 querySnapshot
- opencv - 错误:OpenCV(4.1.2)/io/opencv/modules/imgproc/src/resize.cpp:3720:错误:(-215:断言失败)!ssize.empty()在函数'resize'识别中
- python - Pandas:如何替换数据框中所有小于前一个值的值?
- javascript - Vue,来自 routerview 的内容隐藏