如何记录Gson解析Field by Field以找出触发的字段错误

时间:2018-01-17 09:35:08

标签: android json gson retrofit

有没有办法通过Field提交Log Gson解析?日志应打印已归档的名称和响应中收到的相应值。 示例:模型类看起来像这样

public class Item{

@SerializedName("ItemCode")
@Expose
private String ItemCode;
@SerializedName("ItemSN")
@Expose
private String ItemSN;
@SerializedName("ItemDesc")
@Expose
private String ItemDesc;

--getter setter methods--
}    

如果回复如下:

{
"ItemCode":"A12"
"ItemSN":"123455672"
"ItemDesc":"Google Pixel"
}

Gson解析时,应生成以下日志

ItemCode是A12

ItemSN是123455672

ItemDesc是Google Pixel

我希望这可以解决以下问题。如果任何其他解决方案适用于此类问题,请建议。

我的应用程序的一个API(比如init API)返回我使用Retrofit-Gson-RxJava解析的JSON响应,我们有两个环境设置Test和Prod for prod环境响应被成功解析但是对于测试环境我得到了NumberFormatException显然告诉我们某些Numeric字段的回复值为Numeric

由于响应的大小很大,因此很多对象彼此嵌套,因此很难找到解析失败的确切字段。

1 个答案:

答案 0 :(得分:0)

添加HttpLoggingInterceptor:compile" com.squareup.okhttp3:logging-interceptor:3.3.1"

 public static Retrofit getInstance() {
    if (instance == null) {
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();          
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient.Builder httpClient = new OkHttpClient.Builder();           
        httpClient.addInterceptor(logging);  // <-- this is the important line!
        instance = new Retrofit.Builder().baseUrl(Constant.BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(httpClient.build())
                    .build();
    }
    return instance;
}