ريستمبلات وجاكسون وبروجارد
-
26-12-2019 - |
سؤال
أحاول الحصول على التطبيق يعمل بعد التشويش.لدي فصلين بسيطين:
public class ApiUrlResponseData
{
@JsonProperty( "@links" )
List<Link> links;
public List<Link> getLinks()
{
return links;
}
}
public class Link
{
@JsonProperty( "url" )
String url;
@JsonProperty( "name" )
String name;
@JsonProperty( "mobile" )
Boolean mobile;
public Link()
{
}
public Link( String url, String name, Boolean mobile )
{
this.url = url;
this.name = name;
this.mobile = mobile;
}
public String getUrl()
{
return url;
}
public String getName()
{
return name;
}
public Boolean isMobile()
{
return mobile;
}
}
للأسف بعد التشويش وطلب تنفيذ ApiUrlResponseData.getLinks()
المرتجعات null
.
هنا هو كيف أحاول منع التشويش لكائنات البيانات:
-keepclasseswithmembernames class com.companyname.android.network.data.** {
public <fields>;
protected <fields>;
<fields>;
@org.codehaus.jackson.annotate.* <fields>;
@org.codehaus.jackson.annotate.* <init>(...);
}
ما أنا في عداد المفقودين?
المحلول
الخيارات -keepclasseswithmembernames
غريبة جدا:يحتفظ بأسماء الفئات (وحقولها وأساليبها) ، إذا كانت الفئات تحتوي على الكل الحقول والأساليب المحددة.ومن المفيد في الغالب للحفاظ على الطبقات جني والأساليب.
يمكنك الاحتفاظ بالحقول والأساليب المشروحة:
-keepclassmembers class * {
@org.codehaus.jackson.annotate.* *;
}
لسوء الحظ ، عليك بعد ذلك التأكد من أن جميع الحقول والأساليب المعنية مشروحة.
قد يكون من الأسهل الاحتفاظ بجميع الحقول وطرق الفئات المتسلسلة مثل هذه:
-keepclassmembers class com.example.ApiUrlResponseData,
com.example.Link {
*;
}
يمكنك استخدام أحرف البدل أو التعليقات التوضيحية أيضا لتحديدها.
لا تنتمي إلى StackOverflow