Retrofit中的转换器

本文介绍了如何在Retrofit中使用转换器将服务器的JSON响应自动转化为Java Bean对象。首先,通过在线工具从JSON生成Java实体类,然后创建对应的Http接口,并在Retrofit接口中使用转换器来接收BaseResponse类型的返回值,实现数据自动转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我们接到服务器响应后,目前无论是okHttp还是Retrofit都只能接收到String字符串类型的数据,在实际开发中,我们经常需要对字符串进行解析将其转变为一个Java Bean对象。比如服务器响应数据为JSON格式字符串,那么我们可以自己利用GSON库完成反序列化的操作。而Retrofit提供了多个转换器使得响应能够完成自动的数据转换。下文以json解析为例。


添加转换器依赖

implementation "com.squareup.retrofit2:converter-gson:2.9.0"


第一步:获取Java Bean,生成实体类

进入wanandroid API开放平台 https://www.wanandroid.com/blog/show/2,使用里面的登录接口为 

https://www.wanandroid.com/user/login 方法:POST 参数: username,password

使用Postman查看该接口的请求结果:


 

进入在线JSON校验格式化工具(Be JSON)选择json生成java实体类,将返回的结果粘贴进去,然后class我这里名称改为BaseResponse,Package则是你的包名 

下载代码,将下载完成的文件复制到工程目录下

在代码里面生成toString方法(两个都需要)点击alt+insert然后点击toString()

 

 


第二步:根据Http接口创建Java接口

package com.example.networkdemo;

import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

public interface WanAndroidService {
    @POST("user/login")
    @FormUrlEncoded
    Call<BaseResponse> login(@Field("username") String username, @Field("password") String pwd);
}


第三步:使用转换器,BaseResponse接收返回值

package com.example.networkdemo;

import org.junit.Test;
import java.io.IOException;
import retrofit2.Call;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitTest {

    //使用转换器
    Retrofit retrofit2=new Retrofit
         .Builder()
         .baseUrl("https://www.wanandroid.com/")
         .addConverterFactory(GsonConverterFactory.create())//添加转换器
         .build();
    WanAndroidService wanAndroidService=retrofit2.create(WanAndroidService.class);


    @Test
    public void loginConvertTest() throws IOException {
        //登录
        Call<BaseResponse> call = wanAndroidService.login("dll", "dl666666");
        //发送请求将数据转换成java对象
        Response<BaseResponse> response = call.execute();
        BaseResponse baseResponse = response.body();
        System.out.println(baseResponse);

    }


}


运行结果:

 转换器就完成了自动转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值