android - LoganSquare 解析 Android 库 : feedback, 基准,优点,缺点

标签 android json android-parser logan-square

我使用 Jackson 和 DataBind 库来解析 json 并将其映射到 java 对象。我还在其他对性能要求较低的项目中使用 Gson。

2 月 17 日,LoganSquare库首次发布, promise 解析速度比 Gson 快 4-10 倍。

  • LoganSquare 比 Gson/Jackson 没有哪些优势?
  • 利弊?
  • 你们在生产应用中有基准吗?
  • 对于生产应用来说足够稳定吗?

我知道这可能是一个主要基于意见的问题,因此请尽可能技术性和具体性,并将您的答案基于真实数据。

最佳答案

很清楚,如果您将应用发布到带有 ART 的设备上,您将通过解析获得巨大的速度优势。

所以我将解释到目前为止我对 logansquare 的体验。

优点:

  • 易于使用:使用 Gson 必须使用 Type 将 json 数组解析为对象列表,在 loganSquare 中就像 LoganSquare.parseList()
  • 更快:在任何设备上(自己测试)都稍快。
  • FasterER:在 ART 设备中,它的速度差距真的很大,看看他们的基准测试
  • RetroFit 友好:是的,它很适合 retrofit 。

缺点:

  • NO REALM DB:到目前为止,我无法使用 Realm db 运行它(我还没有努力)

  • 自定义类型适配器:目前找不到类型适配器或类似的东西,但我不确定。

查看他们的基准 here

这是我糟糕的基准测试结果(它不是一个适当的基准测试,但它是一些东西): 模拟器nexus 5,带有DalvikVM,4.2 jellybean

基准测试

parsing time sheet

parsing time graph

解析模型

import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.google.gson.annotations.SerializedName;

/**
 * Created by Ercan on 6/26/2015.
 */
@JsonObject(serializeNullCollectionElements = true ,serializeNullObjects = true)
public class Village {

    @SerializedName("IdVillage")
    @JsonField(name ="IdVillage")
    String tbsVillageId;

    @SerializedName("TBS_VillageId")
    @JsonField(name ="TBS_VillageId")
    String townRefId;

    @SerializedName("VillageName")
    @JsonField(name ="VillageName")
    String villageName;

    @SerializedName("Status")
    @JsonField(name ="Status")
    String status;

    @SerializedName("DateInserted")
    @JsonField(name ="DateInserted")
    String dateInserted;

    @SerializedName("DateLastModified")
    @JsonField(name ="DateLastModified")
    String datelastModified;

    public String getTbsVillageId() {
        return tbsVillageId;
    }

    public void setTbsVillageId(String tbsVillageId) {
        this.tbsVillageId = tbsVillageId;
    }

    public String getTownRefId() {
        return townRefId;
    }

    public void setTownRefId(String townRefId) {
        this.townRefId = townRefId;
    }

    public String getVillageName() {
        return villageName;
    }

    public void setVillageName(String villageName) {
        this.villageName = villageName;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getDateInserted() {
        return dateInserted;
    }

    public void setDateInserted(String dateInserted) {
        this.dateInserted = dateInserted;
    }

    public String getDatelastModified() {
        return datelastModified;
    }

    public void setDatelastModified(String datelastModified) {
        this.datelastModified = datelastModified;
    }
}

关于android - LoganSquare 解析 Android 库 : feedback, 基准,优点,缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30981565/

相关文章:

android - 如何使用dom和saxparser解析android中的本地xml文件?

Android:如果我使用 SmsManager 发送短信,它会自动重新发送失败的短信吗?

安卓用户界面 : "Smart" centering?

android - 将限制和偏移量传递给请求 - 适用于 Android 3.0 的 Facebook SDK

json - 注释掉简单 json 中的行以放置一些描述

ios - 如何使用 URLSession 从 url 获取 JSON 数据?

json - 使用 Decoder swift 嵌套 JSON 时出错

java - Android如何解析XHTML

java - 如何从android中的原始有效负载中提取值(value)?

Android 内置麦克风释放问题