serialVersionUID已添加到JSON

时间:2017-04-18 09:04:15

标签: android json gson serialversionuid

我使用com.google.code.gson:gson:2.2.4库将对象转换为JSON,使用代码:

String json = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create().toJson(object);

在JSON字符串" serialVersionUID"即使它不在模型类中,也会自动添加Long值。我只想从JSON中删除serialVersionUID

2 个答案:

答案 0 :(得分:0)

我找到了this回答。基本上,InstantVersionUID是由InstantRun添加的,禁用InstantRun为我解决了这个问题。

答案 1 :(得分:0)

解决此问题的一种方法是使用GsonBuilder.excludeFieldsWithoutExposeAnnotation然后使用@Expose注释明确标记什么是(序列化)序列化。

public class SomeClass {
    private int field1 = 2;
    @Expose private int field2 = 6;
    @Expose @SerializedName ("foo") private int field3 = 12;
}

给你{"field2":6, "foo":12}。排除字段field1,因为它未使用@Expose进行注释。

就个人而言,我总是使用GsonBuilder.excludeFieldsWithoutExposeAnnotation,因为它会过滤掉任何生成的字段(例如上面的即时运行评论)。如果您没有使用@Expose对其进行注释,则不会对其进行序列化/反序列化。

另一种方法是将字段声明为transient