为了账号安全,请及时绑定邮箱和手机立即绑定

改造2:从响应正文获取JSON

改造2:从响应正文获取JSON

互换的青春 2019-11-13 14:17:41
我想使用翻新2从我的api中获取字符串json,当使用翻新1来获取此json时我没有问题,但是使用翻新2 为我返回null。这就是我的json的样子{"id":1,"Username":"admin","Level":"Administrator"}这是我的API@FormUrlEncoded@POST("/api/level")Call<ResponseBody> checkLevel(@Field("id") int id);这就是我的代码的样子Retrofit retrofit = new Retrofit.Builder()                .baseUrl(Config.BASE_URL)                .addConverterFactory(GsonConverterFactory.create())                .build();        Api api = retrofit.create(Api.class);        Call<ResponseBody> call = api.checkLevel(1);        call.enqueue(new Callback<ResponseBody>() {            @Override            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {                JsonObject post = new JsonObject().get(response.body().toString()).getAsJsonObject();                    if (post.get("Level").getAsString().contains("Administrator")) {                    }            }            @Override            public void onFailure(Call<ResponseBody> call, Throwable t) {            }        });我是不熟悉2并使用上面的代码的新手,它总是使我的应用程序崩溃,因为response.body().toString()返回null。请指导我如何获取该json字符串,以便可以将其转换为JsonObject。
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

如果要以JSON格式获取整个响应,请尝试以下操作:


我尝试了一种新方法,可以从服务器获取JSON格式的整个响应,而无需创建任何模型类。我不使用任何模型类从服务器获取数据,因为我不知道我将得到什么响应,否则它可能会根据要求而变化。


这是JSON响应:


{"contacts": [

    {

        "id": "c200",

        "name": "sunil",

        "email": "email@gmail.com",

        "address": "xx-xx-xxxx,x - street, x - country",

        "gender" : "male",

        "phone": {

            "mobile": "+91 0000000000",

            "home": "00 000000",

            "office": "00 000000"

        }

    },

    {

        "id": "c201",

        "name": "Johnny Depp",

        "email": "johnny_depp@gmail.com",

        "address": "xx-xx-xxxx,x - street, x - country",

        "gender" : "male",

        "phone": {

            "mobile": "+91 0000000000",

            "home": "00 000000",

            "office": "00 000000"

        }

    },

    .

    .

    .

]}

在您的API界面中更改参数


public interface ApiInterface {

@POST("/index.php/User/login")//your api link 

@FormUrlEncoded

Call<Object> getmovies(@Field("user_email_address") String title,

                @Field("user_password") String body);

}

在您的主要活动中


ApiInterface apiService =

        ApiClient.getClient().create(ApiInterface.class);


Call call = apiService.getmovies("a@gmail.com","123456");

call.enqueue(new Callback() {

    @Override

    public void onResponse(Call call, Response response) {

        Log.e("TAG", "response 33: "+new Gson().toJson(response.body()) );

    }


    @Override

    public void onFailure(Call call, Throwable t) {

        Log.e("TAG", "onFailure: "+t.toString() );

        // Log error here since request failed

    }

});

之后,您通常可以使用JSON对象和JSON数组获取参数


查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 488 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信