4.使用Jackson将Json数据转换成实体数据

Jar下载地址:http://jackson.codehaus.org/




注意:
一、类中的属性名称一定要和Json数据的属性名称一致(大小写敏感),类之间的嵌套关系也应该和Json数据的嵌套关系一致。

二、当返回的json数据中新增了某些字段,而实体类又没有相关的属性名与之对应,此时的解决方案如下。即在类名上一行添加@JsonIgnoreProperties(ignoreUnknown = true)即可。

@JsonIgnoreProperties(ignoreUnknown = true)//为了防止后台接口返回此类中没有定义的属性而造成的bug。
public class CxcMoniJson extends SiteMoniJson {


}

三、当实体类中新增了某些属性,而返回的json数据又没有相关的字段与之对应,此时这种情况是不会有bug的,放心使用。


四、不要在实体类中使用内部类,否则会解析异常。

五、关于Jackson的混淆。

1.保留相关的Jackson的jar包下的类。

-libraryjars   libs/jackson-all-1.9.2.jar
-dontwarn org.codehaus.jackson.**
-keep  class org.codehaus.jackson.**{*;}
-keep interface org.codehaus.jackson.** { *; }  
-keep public class * extends org.codehaus.jackson.**  

2.保留相关的Bean类,因为Jackson内部实现原理是有使用反射技术的,所以要保留相关的实体类,比如我的实体类都在com.cy.app.money.model包下,则引入以下代码。

-dontwarn com.cy.app.money.model.**
-keep class com.cy.app.money.model.** {*;}

3.过滤相关泛型和注解,因为实体类中可能会有List<实体类>等泛型,如果不过滤,混淆之后List<实体类>就会变成List,导致反射的时候出错。

过滤泛型:
-keepattributes Signature

过滤注解:
-keepattributes *Annotation*

你可能感兴趣的:(json,Jackson,ObjectMapper,解析实体,Jackson混淆)