2017-06-05 11 views
0

私はAndroidが初めてです。 JSONリストから文字列のリストを取得する必要があります。これはSpinnerリストに追加されます。私はサーバー上のリストを持っていますRetrofit 2を使用してJSONリストからリスト<String>を取得する方法は?

[{"bgroup":"A+"},{"bgroup":"A1+"},{"bgroup":"A1-"}]. 

Retrofit Scalarsで試しました。

期待

文字列ではなくBEGIN_OBJECT [0] *

行1列3パス$で取得するための任意のより良い方法だった:

[{"bgroup":"A+"},{"bgroup":"A1+"},{"bgroup":"A1-"}] 

が、エラーとして検出するよう レスポンスJSONからの文字列のリスト?

+0

をオブジェクトがどこから来たかの文字列を読み取ることはできません。 'List 'を持つマッピングを作成し、後で 'Mapping.bgroup'から直接文字列を抽出するのはなぜですか? –

+0

カスタムデータオブジェクトに同じ文字列を使用した場合、自動的にレトロフィットすることで、フォーマットされたデータオブジェクトに値が与えられます。同じキーを使用してください。依存関係をコンパイルする 'com.squareup.retrofit2:converter-gson:2.0.2' –

+0

@LyubomyrShaydariv答えをいただきありがとうございます。このシナリオでは、単純なList の例を挙げられますか? –

答えて

0

これはサンプルコードです:

GroupService groupService = createService(GroupService.class); 

Call<List<Groups>> groupCall = groupService.getGroups(); 

    groupCall.enqueue(new Callback<List<Groups>>() { 
      @Override 
      public void onResponse(retrofit.Response<List<Groups>> response, Retrofit retrofit) { 


      } 

      @Override 
      public void onFailure(Throwable t) { 
       t.printStackTrace(); 

      } 
     }); 

インタフェース:

public interface GroupService { 

@GET("<URL>") 
Call<List<Groups>> getGroups(); 
} 

は、モデル名のグループを作成します。

私はこれがあなたを助けてくれることを願っています。

0

この

public interface ApiService { 

@GET("<URL>") 
Call<List<Example>> getBloodGroups(); 
} 

のようなインターフェイスクラスを作成し、最終的には、以下のような改造を呼び出したより、以下のモデルクラス(parcelable)

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Example implements Parcelable { 

@SerializedName("bgroup") 
@Expose 
private String bgroup; 

public String getBgroup() { 
return bgroup; 
} 

public void setBgroup(String bgroup) { 
this.bgroup = bgroup; 
} 


    protected Example(Parcel in) { 
     bgroup = in.readString(); 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(bgroup); 
    } 

    @SuppressWarnings("unused") 
    public static final Parcelable.Creator<Example> CREATOR = new Parcelable.Creator<Example>() { 
     @Override 
     public Example createFromParcel(Parcel in) { 
      return new Example(in); 
     } 

     @Override 
     public Example[] newArray(int size) { 
      return new Example[size]; 
     } 
    }; 
} 

を行います。それははっきりことを示しています

Call<List<Example>> call = new RestClient(this).getApiService() 
       .getBloodGroups(); 
     call.enqueue(new Callback<List<Example>>() { 
      @Override 
      public void onResponse(Call<List<Example>> call, Response<List<Example>> response) { 

      } 

      @Override 
      public void onFailure(Call<List<Example>> call, Throwable throwable) { 

      } 
     }); 
+0

はい。あなたの答えはうまくいくはずです。しかし、私はModelクラスなしで使用したいと思います。他の簡単な方法は何ですか? –

+0

JSON文字列としてのみ応答を取得したいですか? –

+0

リストに応答値を追加したい場合は、スピナードロップダウンに使用できます。 私はシンプルなモデルクラスを作成しました。今働いている。ありがとう@クリシュナミーナ –

関連する問題