im 得到的错误是“java.lang.IllegalArgumentException: class com.activeandroid.DatabaseHelper 声明了多个名为 mContext 的 JSON 字段”
我使用AndroidAnnotations RestClient从我的Web服务中提取数据并序列化到POJOs中。使用ORMLite时序列化工作得很好,但我最近决定尝试活动Android,现在我的类扩展了模型。Gson正在序列化我无法控制的父类。无论如何,我可以只包含某些字段,或者只是从RestClient返回普通的JSON,并以不同的方式进行序列化
@Rest(rootUrl = "http://stuff...com", converters = { GsonHttpMessageConverter.class })
public interface RestClient {
@Get("/AndroidController/createFacebookUser?facebookToken={facebookToken}&catIds= {catIds}")
User createFacebookUser(String facebookToken,String catIds);
}
用户模型是
@Data
@Table(name = "Users")
public class User extends Model {
@Column(name = "SystemID")
private String systemID;
@Column(name = "Name")
private String name;
public List<GameEntry> items() {
return getMany(GameEntry.class, "Category");
}
public User(){}
}
Gson提供了从序列化和反序列化中排除字段和类型的多种方法。看看从序列化和反序列化中排除字段,特别是@Expose
注释和用户定义的ExclusionStrategy
的用法。
我创建了我自己的Serializer,它扩展了AbstractHttpMessageConverter
自定义HttpMessageConverter与@响应体做Json的事情
我唯一改变的是我制作了 Gson 并在我想要序列化的字段上使用@Expose
private Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();