gpt4 book ai didi

android - Json 字符串到 Realm 对象,最快的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:38 27 4
gpt4 key购买 nike

我有以下在 AsyncTask 中运行的代码。它运行良好,但以下几行似乎使它在使用时慢了 3-5 秒。有没有更快的方法将我的 json 字符串转换为 realm?

    //Load the local model data. params[0].toString() is a json string loaded from SharedPreferences.
JsonParser jsonParser = new JsonParser();
JsonObject o = (JsonObject)jsonParser.parse(params[0].toString());

Realm realmThread = Realm.getInstance(visnetawrap.appModel);

//work orders, total entries of 4000.
JsonArray openWorkOrders = o.getAsJsonArray("work_orders");

//Convert the lists so they can be used with realm.
List<OpenOrderObject> woList = visnetawrap.gsonClient.fromJson(openWorkOrders.toString(), new TypeToken<List<OpenOrderObject>>() {
}.getType());
realmThread.beginTransaction();
realmThread.copyToRealm(woList);
realmThread.commitTransaction();

最佳答案

这取决于您的 JSON 与您的模型类的匹配程度。在上面的代码中,您似乎做了很多额外的工作,在字符串表示和对象模型之间转换了 2 次。

如果您的模型与 JSON 1:1 匹配,您只需使用 realm.createAllFromJson(OpenOrderObject.class, openWorkOrders)。您不必首先使用 GSON 转换它,除非 GSON 以某种方式操作输入。你可以在这里看到更多:https://realm.io/docs/java/latest/api/io/realm/Realm.html#createAllFromJson-java.lang.Class-org.json.JSONArray- .

此外,如果您的输入相当小(我猜这是因为您将其保存在 SharedPreferences 中),那么解析它真的不需要几秒钟,但请注意 Realm 事务是阻塞的,所以如果您有多个背景执行事务的线程会互相阻塞。

关于android - Json 字符串到 Realm 对象,最快的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31162944/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com