我使用com.google.code.gson:gson:2.2.4
库将对象转换为JSON,使用代码:
String json = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create().toJson(object);
在JSON字符串" serialVersionUID"即使它不在模型类中,也会自动添加Long
值。我只想从JSON中删除serialVersionUID
。
答案 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
。