【问题标题】:Gson serialization error class com.activeandroid.DatabaseHelper declares multiple JSON fields named mContextGson序列化错误类com.activeandroid.DatabaseHelper声明了多个名为mContext的JSON字段
【发布时间】:2013-03-12 04:34:08
【问题描述】:

我得到的错误是“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(){}

}

【问题讨论】:

    标签: android gson resttemplate android-annotations activeandroid


    【解决方案1】:

    Gson 提供了多种从序列化和反序列化中排除字段和类型的方法。看看Excluding Fields From Serialization and Deserialization,具体是@Expose注解和用户自定义ExclusionStrategy的用法。

    【讨论】:

      【解决方案2】:

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

      Custom HttpMessageConverter with @ResponseBody to do Json things

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

      private Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
      

      【讨论】:

        猜你喜欢
        • 2019-08-23
        • 2016-01-25
        • 2019-03-24
        • 2017-12-11
        • 2014-09-09
        • 2019-04-08
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多