如何将改装响应转换为json对象

时间:2018-04-05 10:40:27

标签: android json post retrofit

我只是想知道我怎么能转换这个改进的库响应,它实际上是对JSON对象的JSON响应所以我可以在我的Android应用程序中使用它来做某事因为我无法对缓冲读取器中的响应做任何事情

public void getMe(){
    RestAdapter adapter = new RestAdapter.Builder()
            .setEndpoint(ROOT_URL)
            .build();

    myApi api = adapter.create(myApi.class);
    api.sendme(

            userEmail,
            rs,
            Team1,
            Team2,

            new retrofit.Callback<retrofit.client.Response>() {
                @Override
                public void success(retrofit.client.Response result, retrofit.client.Response response) {

                    BufferedReader reader = null;


                    try {

                        reader = new BufferedReader(new InputStreamReader(result.getBody().in()));
                        if (!output.equals("")) {
                            output = reader.readLine();



                        }


                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

                @Override
                public void failure(RetrofitError error) {
                    // loading.dismiss();
                    Toast.makeText(Leaderboard.this, "", Toast.LENGTH_LONG).show();
                }
            }
    );


}

这里让我发送回复服务器

public interface myApi {

@FormUrlEncoded
@POST("/myleaderboard.php")
void sendme(

        @Field("userEmail") String userEmail,
        @Field("rs") String rs,
        @Field("team1") String team1,
        @Field("team2") String team2,
        Callback<Response> callback);

 }

我得到了JSON响应,我必须以某种方式将它存储在我的android代码中,无论是否使用JSON对象或其他任何其他内容。 请帮帮我这个

3 个答案:

答案 0 :(得分:1)

只需将myAPi代码更改为

即可
public interface myApi {

@FormUrlEncoded
@POST("/myleaderboard.php")
void sendme(

        @Field("userEmail") String userEmail,
        @Field("rs") String rs,
        @Field("team1") String team1,
        @Field("team2") String team2,
        Callback<JsonObject> callback);

 }

它将直接返回JsonObject

答案 1 :(得分:0)

使用GsonConverterFactory将传入的json转换为model / pojo类

implementation 'com.squareup.retrofit2:converter-gson:LATEST_VERSION'

请浏览以下链接 Retrofit Library Tutorial

Consuming-APIs-with-Retrofit

答案 2 :(得分:0)

使用此链接将您的JSON转换为POJO,并在[http://www.jsonschema2pojo.org/

下方的图片中选择选项

你会得到一个像你这样的回复的POJO课程

public class Result {

@SerializedName("id")
@Expose
private Integer id;


/**
* 
* @return
* The id
*/
public Integer getId() {
    return id;
}

/**
* 
* @param id
* The id
*/
public void setId(Integer id) {
    this.id = id;
}

然后使用这样的界面:

@FormUrlEncoded
@POST("/api/level")
Call<Result> checkLevel(@Field("id") int id);

添加依赖项

    compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.+'

并且这样打电话:

Call<Result> call = api.checkLevel(1);
call.enqueue(new Callback<Result>() {
    @Override
    public void onResponse(Call<Result> call, Response<Result> response) {
        response.body(); // have your all data
        int id =response.body().getId();
        String userName = response.body().getUsername();
        String level = response.body().getLevel();
    }

    @Override
    public void onFailure(Call<Result> call, Throwable t) {
    }
});
在JSON中获取响应的

不要使用Retrofit中的addConverterFactory(GsonConverterFactory.create())