如何使用改造转换数据获取json对象和字符串?

时间:2016-06-16 21:09:58

标签: android retrofit2

从git有一个这样的建议 但我不知道如何使用它,在哪里打电话,任何提示都可能有用 retrofit允许转换json,xml,但我需要作为对象,转换数据和字符串以及

@GET("whatever")
Call<Pair<User, String>> whatever();

Type firstType = //reflection
Converter<ResponseBody, Object> delegate = retrofit.nextResponseBodyConverter(firstType, annotations);
return new Converter<ResponseBody, Pair<Object, String>>() {


@Override public Pair<Object, String> convert(ResponseBody body) {
String string = body.string();
Object object = delegate.convert(ResponseBody.create(null, string));
return new Pair<>(object, string);
  }
};

2 个答案:

答案 0 :(得分:0)

请先检查Retrofit documentation。它很有用。

您还可以浏览this教程。它有点长,但它足够好了。

总而言之,您需要做四件事:

  • POJO(普通旧Java对象)a.k.a学生,汽车,用户等
  • REST客户端 - 查看教程
  • 界面在哪里描述API的每个部分 - 查看教程
  • 当您调用API并等待所需的任何内容时,等待来自改造的回调 - 查看教程

答案 1 :(得分:0)

如果您的@GET请求收到类似的内容:

{
  "user": {
    "id": 1,
    "name": "John"
  },
  "str": "Hello World"
}

接口:

public interface MyInterface {
    @GET("/api/user/1")
    Call<ResponseBody> getMyObject();
}

提出请求:

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://server.com")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
MyInterface service = retrofit.create(MyInterface.class);

service.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Response<ResponseBody> response, Retrofit retrofit) {
        String raw = response.body().string();
        MyObject object = new Gson().fromJson(raw, MyObject.class);
    }

    @Override
    public void onFailure(Throwable t) {
    }
});