从改造中获取内容
get content from retrofit
我正在使用 retrofit 来处理 android 中的 Web 服务。
我的 URL 回复是这样的:
{"data":
{"cus_detail":
{
"id": "1",
"cus_unique_id": "181612302153223",
"cus_company_id": "1"
}
}
}
主要:
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://example.com")
.build();
Retro service = restAdapter.create(Retro.class);
service.getFeed(new retrofit.Callback<Object>() {
@Override
public void success(Object obj, Response response) {
Log.v("RETROFIT",obj.toString());
}
@Override
public void failure(RetrofitError retrofitError) {
System.out.println("RETROFIT_ERROR "+retrofitError);
}
});
接口:
public interface Retro {
@GET("/user?format=json&method=view_profile&cus_id=1")
void getFeed(Callback<Object> response);
}
我得到这个结果:
{data={cus_detail={id=1, cus_unique_id=181612302153223, cus_company_id=1}}}
如何从此数据中检索 cus_unique_id
?
理想情况下,使用 Retrofit,您可以创建映射到您的 JSON 的 Java 类,并使用它们代替 Callback<Object>
中的 Object
。我发现 this tool 有助于创建 类。然后您就可以轻松访问 cus_unique_id
.
service.getFeed(new retrofit.Callback<Data>() {
@Override
public void success(Data data, Response response) {
String cus_unique_id = data.cus_detail.cus_unique_id;
Log.v("RETROFIT",data.toString());
}
@Override
public void failure(RetrofitError retrofitError) {
System.out.println("RETROFIT_ERROR "+retrofitError);
}
});
如果不这样做,我相信 obj
的类型实际上是 Map<String, Object>
。所以你可以尝试像下面这样的东西。和@GreyBeardedGeek 一样,我不推荐这种方法。
service.getFeed(new retrofit.Callback<Object>() {
@Override
public void success(Object obj, Response response) {
Map<String, Object> data = (Map<String, Object>) ((Map<String, Object>) obj).get("data");
Map<String, Object> cus_detail = (Map<String, Object>) data.get("cus_detail");
String cus_unique_id = (String) cus_detail.get("cus_unique_id");
Log.v("RETROFIT",obj.toString());
}
@Override
public void failure(RetrofitError retrofitError) {
System.out.println("RETROFIT_ERROR "+retrofitError);
}
});
我正在使用 retrofit 来处理 android 中的 Web 服务。 我的 URL 回复是这样的:
{"data":
{"cus_detail":
{
"id": "1",
"cus_unique_id": "181612302153223",
"cus_company_id": "1"
}
}
}
主要:
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://example.com")
.build();
Retro service = restAdapter.create(Retro.class);
service.getFeed(new retrofit.Callback<Object>() {
@Override
public void success(Object obj, Response response) {
Log.v("RETROFIT",obj.toString());
}
@Override
public void failure(RetrofitError retrofitError) {
System.out.println("RETROFIT_ERROR "+retrofitError);
}
});
接口:
public interface Retro {
@GET("/user?format=json&method=view_profile&cus_id=1")
void getFeed(Callback<Object> response);
}
我得到这个结果:
{data={cus_detail={id=1, cus_unique_id=181612302153223, cus_company_id=1}}}
如何从此数据中检索 cus_unique_id
?
理想情况下,使用 Retrofit,您可以创建映射到您的 JSON 的 Java 类,并使用它们代替 Callback<Object>
中的 Object
。我发现 this tool 有助于创建 类。然后您就可以轻松访问 cus_unique_id
.
service.getFeed(new retrofit.Callback<Data>() {
@Override
public void success(Data data, Response response) {
String cus_unique_id = data.cus_detail.cus_unique_id;
Log.v("RETROFIT",data.toString());
}
@Override
public void failure(RetrofitError retrofitError) {
System.out.println("RETROFIT_ERROR "+retrofitError);
}
});
如果不这样做,我相信 obj
的类型实际上是 Map<String, Object>
。所以你可以尝试像下面这样的东西。和@GreyBeardedGeek 一样,我不推荐这种方法。
service.getFeed(new retrofit.Callback<Object>() {
@Override
public void success(Object obj, Response response) {
Map<String, Object> data = (Map<String, Object>) ((Map<String, Object>) obj).get("data");
Map<String, Object> cus_detail = (Map<String, Object>) data.get("cus_detail");
String cus_unique_id = (String) cus_detail.get("cus_unique_id");
Log.v("RETROFIT",obj.toString());
}
@Override
public void failure(RetrofitError retrofitError) {
System.out.println("RETROFIT_ERROR "+retrofitError);
}
});