【问题标题】:After applying Proguard, Jackson skipping to parse json response with root应用 Proguard 后,Jackson 跳过以 root 解析 json 响应
【发布时间】:2016-07-07 10:01:24
【问题描述】:

我已启用 Proguard 并为我正在使用的所有库添加了适当的 proguard 规则。

我使用 Retrofit 进行网络调用,使用 Jackson 转换器来解析响应。

我的 Json 响应具有根值,为了使用 Jackson 解析它,我使用设置 SerializationFeature.WRAP_ROOT_VALUEDeserializationFeature.UNWRAP_ROOT_VALUE。在我应用 proguard 之前一切正常。

在不给出任何解析异常的情况下,字段被解析为空值。

我为 Jackson 使用的 Proguard 规则是

-keepnames class com.fasterxml.jackson.** { *; }

-dontwarn com.fasterxml.jackson.databind.*

-keepattributes *Annotation*,EnclosingMethod,Signature

-keep class org.codehaus.** { *; }

-keepclassmembers public final enum 
 org.codehaus.jackson.annotate.JsonAutoDetect$Visibility {
  public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *;
}

-keepclasseswithmembers class com.jombay.vger.rx.resources.** {
  public protected private <init>(...);
  public void set(*);
  public ** get*();
}

-keepclasseswithmembers public class  com.jombay.vger.retrofit.resources.** {
  public protected private <init>(...);
  public void set(*);
  public ** get*();
}

-keepclasseswithmembers public class com.jombay.vger.utils.** {
  public protected private <init>(...);
}

-keepclassmembers class * {
 @org.codehaus.jackson.annotate.* *;
}

-keep class com.fasterxml.jackson.databind.ObjectMapper {*;}

-keep class com.fasterxml.jackson.databind.ObjectWriter {*;}

在解决了很多其他问题后,我想出了这个配置。

无法在此处调试和理解问题。

【问题讨论】:

    标签: android json jackson proguard android-proguard


    【解决方案1】:

    在保留域类的配置中,您缺少一些通配符。而不是这个

    -keepclasseswithmembers class com.jombay.vger.rx.resources.** {
      public protected private <init>(...);
      public void set(*);
      public ** get*();
    }
    

    应该是:

    -keepclasseswithmembers class com.jombay.vger.rx.resources.** {
      <init>(...);
      public void set*(***);
      public *** get*();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多