gpt4 book ai didi

android - Retrofit2:检索 JSONObject 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:46 24 4
gpt4 key购买 nike

可以使用 Retrofit2 检索 JSONObject 吗?我在 Movie.java 中做错了什么?

逻辑猫

 [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;
}
}

电影.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();
}
}

最佳答案

我建议在这种情况下您应该避免使用内部 JSONObject 并使用内部类来表示数据。例如,使用 theateronlinedvd 属性创建一个内部 ReleaseDates 类,如下所示:

public class Movie {
private final String TAG = getClass().getSimpleName();

private String title, wiki;
private ReleaseDates 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 setReleaseDates(ReleaseDates releaseDates) {
this.release_dates = releaseDates;
}

public ReleaseDates getReleaseDates() {
return this.release_dates;
}

public static class ReleaseDates {
private String theater;
private String online;
private String dvd;

public String getTheaterReleaseDate() {
return theater;
}

public String getOnlineReleaseDate() {
return online;
}

public String getDvdReleaseDate() {
return dvd;
}
}
}

关于android - Retrofit2:检索 JSONObject 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34388885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com