問題:在使用 alibaba fastjson2 做 @JSONField 字段名映射時,在同模塊包下 Flink Jar 任務正常映射,本地測試正常映射,但是將兩個模塊包上傳至 Flink Cluster 之后,出現反序列化異常,子模塊無法反序列化父模塊中的 Bean Class 對象名,返回對應字段值 null。
<dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.58</version>
</dependency>
原因:fastjson2 擁有更安全的模式,推測原因可能是不支持挎包反序列化不同的變量命名映射,但同包下支持,來保證開發字段命名規范的一致性。
解決:更換繼續使用?com.alibaba.fastjson。解決挎包,@JSONField name 映射 BUG
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.58</version>
</dependency>
父模塊寫法:
import com.alibaba.fastjson.annotation.JSONField;
import lombok.*;@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Student {private Integer id;private String name;@JSONField(name = "phone_number")private String phoneNumber;@JSONField(name = "age_years")private Integer ageYears;}