【问题标题】:Retrofit 2 with Realm response filed提交领域响应的改造 2
【发布时间】:2026-02-13 13:55:02
【问题描述】:

请帮帮我:

有代码

我的模特:

@RealmModule(library = true, allClasses = true)
public class Books extends RealmObject {


    @Expose
    @SerializedName("photo")
    private String photo;

    @Expose
    @SerializedName("rate")
    private Integer rate;

    @Expose
    @SerializedName("rating")
    private Double rating;

我的片段

restRequest.getAllBooks().enqueue(new Callback<List<Books>>() {
            @Override
            public void onResponse(Response<List<Books>> response, Retrofit retrofit) {
                //завершить наш прогресс диалог
                if (response.isSuccess()) {
                    //Создаем коллекцию
                    List<Books> booksList = response.body();
                    realm = Realm.getDefaultInstance();
                    realm.beginTransaction();
                    List<Books> booking = realm.copyToRealm(booksList);
                    realm.commitTransaction();
                    booksAdapter.Pagination(booking);
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Toast.makeText(getContext(), "Error: " + t.getMessage(), Toast.LENGTH_SHORT).show();

            }
        });
    }

和改造

        Retrofit retrofit = new Retrofit.Builder()

                .baseUrl(BASE_URL)

                .client(new OkHttpClient())

                .addConverterFactory(GsonConverterFactory.create())
                //собрать
                .build();

        INSTANCE.boksAPI = retrofit.create(BoksAPI.class);
    }

请帮忙,我不知道我的类会发生什么,但领域是工作,因为我看到记忆是如何增长的:O

【问题讨论】:

    标签: android json retrofit realm


    【解决方案1】:

    我没有看到您正确配置了 Gson。你的代码中应该有类似的初始化:

    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;
            }
        })
        .create();
    

    查看文档了解更多详情:https://realm.io/docs/java/latest/#gson

    【讨论】: