5

我得到的错误是“java.lang.IllegalArgumentException:com.activeandroid.DatabaseHelper 类声明了多个名为 mContext 的 JSON 字段”

我正在使用 AndroidAnnotations RestClient 从我的 Web 服务中提取数据并序列化为 POJO。使用 ORMLite 时序列化工作正常,但我最近决定尝试 Active Android,现在我的类扩展了 Model。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(){}

}

4

2 回答 2

7

Gson 提供了多种从序列化和反序列化中排除字段和类型的方法。看看从序列化和反序列化中排除字段@Expose,特别是注释和用户定义的用法ExclusionStrategy

于 2013-03-12T05:07:03.323 回答
4

我创建了自己的序列化器,它在此处的答案之后扩展了 AbstractHttpMessageConverter

使用 @ResponseBody 自定义 HttpMessageConverter 来做 Json 事情

我唯一改变的是我制作了 Gson 并在我想要序列化的字段上使用了 @Expose

private Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
于 2013-03-13T01:45:43.483 回答