您好我有一个json结构,我需要从url获取数据。我怎样才能做到这一点?什么是类和功能。请帮我。感谢。
这是我的json。
{
nodes: [
{
node: {
title: "...",
field_news_image: [
{title="..."},
{title="..."},
{title="..."},
{title="..."},
{title="..."},
{title="..."},
{title="..."}
],
body: "...",
field_category: "...",
created: "..."
}
},
{
node: {
title: "...",
field_news_image: [
{title="..."},
{title="..."},
{title="..."},
{title="..."},
{title="..."}
],
body: "...",
field_category: "...",
created: "..."
}
}
]
}
答案 0 :(得分:1)
使用jsonschema2pojo.org粘贴您的响应,它将为您生成Java类。 您可以通过设置所有必需的组件来实例化Retrofit实例:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
,您的界面将如下所示:
@GET("api/service/schedule/{filial}")
Observable<Response<List<Event>>> getSchedule(@Path("filial") String filial);
其中@ GET-注释定义请求类型, 应答LT;&GT; - Retrofit使用的类型,包含响应是否成功的信息(参见类方法)。 可观察到的与LT;&GT; - 从rxJava库中键入,允许以反应方式处理请求。 我强烈建议使用RxJava,因为它非常简化了后台执行。 (不要使用AsyncTasks !!)。
为了使用Retrofit2,请将以下行添加到Gradle文件中:
//Reactive programming
compile 'io.reactivex:rxjava:1.1.5'
compile 'io.reactivex:rxandroid:1.2.0'
compile 'com.google.code.gson:gson:2.4'
//retrofit and okhttp
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
您将通过类似的调用实例化Retrofit2接口: retrofit.create(Api.class)
答案 1 :(得分:1)
<强> http://www.jsonschema2pojo.org/ 强>
将您的JSON响应放在此处,并从此网站下载Java代码。然后将这个java代码放入您的项目并使用它。本网站将提供所有必需的课程,其中包含所有必填字段,非常适合您对JSON的回复。我已经用了很多次这肯定会有用。
http://square.github.io/retrofit/ 在这里,您可以获得有关如何使用改装POST或获取数据的详细信息。
Retrofit将您的HTTP API转变为Java接口。
public interface YourService {
@GET("users/{user}/repos")
Call<List<Repository>> listRepos(@Path("user") String user);
}
Retrofit类生成接口的实现。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.yourAPI.com/")
.build();
YourService service = retrofit.create(YourService .class);
Call<List<Repository>> repos = service.listRepos("myrepository");
使用注释来描述 HTTP 请求: