1
Может ли Retrofit2 использоваться для извлечения объекта JSONObject? Что я делаю неправильно в Movie.java?Retrofit2: получение JSONObject не работает
Logcat
[Movie] title: Star Wars: The Force Awakens, wiki: https://en.wikipedia.org/wiki/Star_Wars:_The_Force_Awakens
rel:
test.json
{
"title":"Star Wars: The Force Awakens",
"wiki":"https://en.wikipedia.org/wiki/Star_Wars:_The_Force_Awakens",
"release_dates": { "theater":"2015.12.17", "online":"2016.2.17", "dvd":"2016.01.17" }
}
ServiceAPI.java
public interface ServiceAPI {
@GET("/txt2lrn/bollywood/test.json")
Observable<Movie> getTestRx();
}
MyApplicationB.java
public class MyApplication extends Application {
private static ServiceAPI mService;
@Override
public void onCreate() {
super.onCreate();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://goanuj.freeshell.org")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
mService = retrofit.create(ServiceAPI.class);
}
public static ServiceAPI getServiceAPI() {
return mService;
}
}
Movie.java
public class Movie {
private final String TAG = getClass().getSimpleName();
private String title, wiki;
private JSONObject release_dates;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getWiki() {
return wiki;
}
public void setWiki(String wiki) {
this.wiki = wiki;
}
public void setRelease_dates(JSONObject j) {
Log.d(TAG, "j: " + j.toString());
this.release_dates = j;
}
public String getRelease_dates() {
String date = "";
try {
date = this.release_dates.getJSONObject("theater").toString();
} catch (JSONException e) {
Log.d(TAG, e.getMessage());
}
return date;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("[Movie] title: ");
sb.append(this.title);
sb.append(", wiki: ").append(this.wiki);
sb.append("\n\trel: ").append(this.getRelease_dates());
return sb.toString();
}
}
для линии // дата = this.release_dates.getJSONObject ("театр") ToString() ;, то следует быть «release_датами», а не «театром». Думаю, – Nisarg
@Nisarg Я пробовал это, но он все равно имеет тот же результат. – AG1
Я предполагаю, что дата = this.release_dates.getJSONObject («театр»). ToString(); должен быть this.release_dates.getString ("театр"); Также вы можете получить исключение в logcat. Сохраните журналы доработки. –