2017-12-12 22 views
0

改装をしたばかりです。私は以下のjsonデータを取得する必要があります。私のアプリケーションを実行するとき​​retrofitを使用してJsonデータを取得する方法は?

この種の例外が発生しています。これを解決する方法を教えてください。私は私のコードを以下の詳細な説明で説明しました。このため

{ 
    "DS": { 
     "LST": [ 
      { 
       "BID": 3, 
       "CNM": "kumar", 
       "BNO": "BLO41", 
       "VID": 1, 
       "ETI": 5, 
       "FRM": "/Date(1512930840000)/", 
       "TOD": "/Date(1513017240000)/", 
       "ENM": "Birthday Party", 
       "VNM": "murugan hall", 
       "CNO": "8888888888", 
       "AD1": "ram nagar", 
       "AD2": "ram colony", 
       "AD3": "polachi", 
       "CTN": "Coimbatore", 
       "CDT": "/Date(1512799571000)/", 
       "ICN": "0", 
       "SDT": "10/12/2017", 
       "EDT": "11/12/2017" 
      } 
     ] 
    } 
} 

iはPOJOクラス

上記のモデルクラスは "DS" をJSONオブジェクトにアクセスするためである
public class DS { 
    public DSObj getDsObj() { 
     return dsObj; 
    } 

    public void setDsObj(DSObj dsObj) { 
     this.dsObj = dsObj; 
    } 

    @SerializedName("DS") 
    private DSObj dsObj; 

} 

を使用しました。

public class DSObj { 

@SerializedName("LST") 
    private List<Booking> list; 

    public List<Booking> getList() { 
     return list; 
    } 

    public void setList(List<Booking> list) { 
     this.list = list; 
    } 
} 

上記のクラスDSObjは、内側の "DS" jsonオブジェクトにアクセスしています。

public class Booking { 

    @SerializedName("CNM") 
    String customerName; 
    @SerializedName("BNO") 
    String bookingNumber; 
    @SerializedName("CNO") 
    String contactNumber; 
    @SerializedName("VNM") 
    String venueName; 
    @SerializedName("CTN") 
    String cityName; 
    @SerializedName("VID") 
    String vid; 

    public String getVenueName() { 
     return venueName; 
    } 

    public void setVenueName(String venueName) { 
     this.venueName = venueName; 
    } 

    public String getCustomerName() { 
     return customerName; 
    } 

    public void setCustomerName(String customerName) { 
     this.customerName = customerName; 
    } 

    public String getBookingNumber() { 
     return bookingNumber; 
    } 

    public void setBookingNumber(String bookingNumber) { 
     this.bookingNumber = bookingNumber; 
    } 

    public String getContactNumber() { 
     return contactNumber; 
    } 

    public void setContactNumber(String contactNumber) { 
     this.contactNumber = contactNumber; 
    } 


    public String getCityName() { 
     return cityName; 
    } 

    public void setCityName(String cityName) { 
     this.cityName = cityName; 
    } 


    public String getVid() { 
     return vid; 
    } 

    public void setVid(String vid) { 
     this.vid = vid; 
    } 
} 

上記のモデルクラスは、内側の "LST" json配列にアクセスするためのクラスです。

The Api Interface class for retrofit is Kpublic interface ApiInterface { 

    String base_url = "http://195.100.1.103/mswed"; 
      // listVenue 
    @GET("/?api=listBlocking&eid=5&vid=1&fdt=9/11/2017&tdt=9/01/2018&uid=1") 
    Call<DS> getVenueData(); 
} 

以下のコードは、改造を初期化してデータを取得しています。私は、アプリケーション例外がスローされる実行すると

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    bookingList = (ListView)findViewById(R.id.listData); 

    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(ApiInterface.base_url) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 

    ApiInterface apiInterface = retrofit.create(ApiInterface.class); 
    Call<DS> call = apiInterface.getVenueData(); 
    call.enqueue(new Callback<DS>() { 
     @Override 
     public void onResponse(Call<DS> call, Response<DS> response) { 

      Call<DS> getList = (Call<DS>) response.body(); 

      Log.e("Data",getList+""); 

     } 

     @Override 
     public void onFailure(Call<DS> call, Throwable t) { 
      Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT).show(); 

      Log.e("Json Data Error",t.getMessage()); 
     } 
    }); 

} 

、私が試したが、私は解決策を見つけたことができません。

DS getList = response.body(); 
+0

フォロー[この](HTTPSを取得:// www.learn2crack.com/2016/02/recyclerview-json-parsing.html)チュートリアルで混乱を解消してください。 –

答えて

1

変更

Call<DS> getList = (Call<DS>) response.body(); 

考えると回答からPerticular文字列を取得するために、あなたはこれを試してみてください。

DS dsList= response.body().getDsObj(); 
List<Booking> mList= dsList.getList(); 

ここmListで使用したいが、今あなたがこれを使用することができ、レスポンスから配列を取得します。

+0

あなたの答えはうまくいった。上記のJSON配列から単一の文字列を取得することは可能ですか? – Prabhakaran

+0

何が必要ですか?詳細を教えてください。 – KeLiuyue

+0

あなたの答えは私の問題を解決しました。フェッチされたjsonデータがオブジェクトに格納されていることは疑いの余地がありません。今すぐ私は、オブジェクトに格納されているjsonデータのリストから単一の要素を取得する必要があります – Prabhakaran

2

+0

ありがとう – Prabhakaran

+0

偉大な、それはあなたに役立ちます。私の答えに報酬を与えることができるので、他の人もそれを使うことができます。 –

0

リストmList = new ArrayList(); mList.addAll(。response.body()getDsObj())

リストから

mList.get(位置).getCustomerName.toString()

関連する問題