在android应用程序中,我在执行gson.toJson()时遇到内存问题。我正在做以下步骤:
这次它给了我内存错误。 User Class还与ImageDetails和LocationDetails实体类有关系。
错误:"背景粘性并发标记扫描"
答案 0 :(得分:0)
以下是我解决问题的方法
在build.gradle(项目)中添加以下行 -
classpath“io.realm:realm-gradle-plugin:1.1.0”
在build.gradle(app)中添加以下行 -
申请插件:'realm-android'
以上两行将在您的项目中包含最新版本的Realm。
使用以下代码将Json obj转换为字符串 -
Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})
.registerTypeAdapter(Class.forName("com.wandertrails.realm.UserDetails"), new UserDetailsSerilizer())
.create();
Log.e("Json Value",gson.toJson(new UserDetails()));
将 com.wandertrails.realm.UserDetails 更改为您的班级名称
创建一个JsonSerializer类来手动序列化类 -
public class UserDetailsSerilizer implements JsonSerializer<UserDetails> {
@Override
public JsonElement serialize(UserDetails src, Type typeOfSrc, JsonSerializationContext context) {
final JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("dob",src.getDob());
jsonObject.addProperty("emailAddress",src.getEmailAddress());
jsonObject.addProperty("gender",src.getGender());
jsonObject.addProperty("id",src.getId());
return jsonObject;
}}
答案 1 :(得分:0)
另一个解决方案是拥有一个 RawUser 类,它不会扩展RealmObject并在这个新类上使用 Gson.toJson 。 您可以在Realm User类中添加 getRawUser 方法,然后只需编写
gson.toJson(user.getRawUser());
获取序列化对象