获取数据 Retrofit/OkHttp 与响应列表

huangapple go评论107阅读模式
英文:

Fetch Data Retrofit/OkHttp With Response List

问题

我从API apiServices.getPromo获取了一些数据,你可以看到URL如下,JSON如下所示:

MainActivity.java

  1. apiServices.getPromo(intentData.getStringExtra("event_id"), dataBooking.getString("total_buyer"), prefManager.getIdUser(), intentData.getStringExtra("ticket_id")).enqueue(new Callback<List<Promo>>() {
  2. @Override
  3. public void onResponse(@NonNull Call<List<Promo>> call, @NonNull Response<List<Promo>> response) {
  4. if (response.isSuccessful()) {
  5. if (!response.body().isEmpty()) {
  6. List<Promo> jsonData = response.body();
  7. Log.i("TESTER", "" + jsonData);
  8. } else {
  9. Toast.makeText(PaymentActivity.this, "Maaf, belum ada promo yang tersedia.", Toast.LENGTH_SHORT).show();
  10. }
  11. }
  12. }
  13. });

ApiUrl.java

  1. @FormUrlEncoded
  2. @POST("promopublic")
  3. Call<List<Promo>> getPromo(
  4. @Field("id_event") String id_event,
  5. @Field("total_buyer") String totalBuyer,
  6. @Field("id_user") String id_user,
  7. @Field("id_ticket") String id_ticket);

带有以下结构的POJO:

Promo.java

  1. public class Promo {
  2. @SerializedName("id_promo")
  3. private String id_promo;
  4. @SerializedName("promo_name")
  5. private String promo_name;
  6. @SerializedName("promo_type")
  7. private String promo_type;
  8. @SerializedName("value_based")
  9. private String value_based;
  10. @SerializedName("quota")
  11. private String quota;
  12. @SerializedName("id_event")
  13. private String id_event;
  14. @SerializedName("description")
  15. private String description;
  16. public String getId_promo() {
  17. return id_promo;
  18. }
  19. public void setId_promo(String id_promo) {
  20. this.id_promo = id_promo;
  21. }
  22. public String getPromo_name() {
  23. return promo_name;
  24. }
  25. }

日志显示如下图所示,我的问题是如何提取这些数据并使用数组中的对象?谢谢。

英文:

I fetch some data from API apiServices.getPromo, you can see the url looks like below with the JSON looks like this,

获取数据 Retrofit/OkHttp 与响应列表

MainActivity.java

  1. apiServices.getPromo(intentData.getStringExtra(&quot;event_id&quot;),dataBooking.getString(&quot;total_buyer&quot;),prefManager.getIdUser(),intentData.getStringExtra(&quot;ticket_id&quot;)).enqueue(new Callback&lt;List&lt;Promo&gt;&gt;() {
  2. @Override
  3. public void onResponse(@NonNull Call&lt;List&lt;Promo&gt;&gt; call, @NonNull Response&lt;List&lt;Promo&gt;&gt; response) {
  4. if (response.isSuccessful()){
  5. if (!response.body().isEmpty()){
  6. List&lt;Promo&gt; jsonData = response.body();
  7. Log.i(&quot;TESTER&quot;,&quot;&quot;+jsonData);
  8. }else{
  9. Toast.makeText(PaymentActivity.this, &quot;Maaf, belum ada promo yang tersedia.&quot;, Toast.LENGTH_SHORT).show();
  10. }

ApiUrl.java

  1. @FormUrlEncoded
  2. @POST(&quot;promopublic&quot;)
  3. Call&lt;List&lt;Promo&gt;&gt; getPromo(
  4. @Field(&quot;id_event&quot;) String id_event,
  5. @Field(&quot;total_buyer&quot;) String totalBuyer,
  6. @Field(&quot;id_user&quot;) String id_user,
  7. @Field(&quot;id_ticket&quot;) String id_ticket);

with POJO that looks like this,

Promo.java

  1. public class Promo {
  2. @SerializedName(&quot;id_promo&quot;)
  3. private String id_promo;
  4. @SerializedName(&quot;promo_name&quot;)
  5. private String promo_name;
  6. @SerializedName(&quot;promo_type&quot;)
  7. private String promo_type;
  8. @SerializedName(&quot;value_based&quot;)
  9. private String value_based;
  10. @SerializedName(&quot;quota&quot;)
  11. private String quota;
  12. @SerializedName(&quot;id_event&quot;)
  13. private String id_event;
  14. @SerializedName(&quot;description&quot;)
  15. private String description;
  16. public String getId_promo() {
  17. return id_promo;
  18. }
  19. public void setId_promo(String id_promo) {
  20. this.id_promo = id_promo;
  21. }
  22. public String getPromo_name() {
  23. return promo_name;
  24. }

The Log show like the picture below, my question is how can I extract those data and use the object inside the array? Thanks.
获取数据 Retrofit/OkHttp 与响应列表

答案1

得分: 1

  1. List<Promo> jsonData = response.body();
  2. Log.i("TESTER", "" + jsonData);
  3. String name = jsonData.get(0).getPromo_name();
  4. Log.i("TESTER", "" + name);
英文:

Nevermind, this is the trick I used

  1. List&lt;Promo&gt; jsonData = response.body();
  2. Log.i(&quot;TESTER&quot;,&quot;&quot;+jsonData);
  3. String name = jsonData.get(0).getPromo_name();
  4. Log.i(&quot;TESTER&quot;,&quot;&quot;+name);

huangapple
  • 本文由 发表于 2020年6月29日 12:06:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/62631052.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定