首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LoganSquare解析Android库:反馈、基准测试、利弊

LoganSquare解析Android库:反馈、基准测试、利弊
EN

Stack Overflow用户
提问于 2015-06-22 13:44:15
回答 4查看 3.7K关注 0票数 16

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

2月17日,LoganSquare库首次发布,承诺以Gson的方式进行4-10倍的解析.

  • LoganSquare比Gson/Jackson没有什么优势?
  • 赞成与反对?
  • 在生产应用程序中有基准测试吗?
  • 对于生产应用程序?来说是足够稳定的。

我知道这可能是一个基本的意见基础问题,所以要尽可能地技术和具体,并根据真实的数据来回答。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-08-10 06:47:26

好吧,要明确的是,如果你发布你的应用程序的设备与艺术,你将有一个巨大的速度优势,通过解析。

因此,我将解释我的经验,以logansquare到目前为止。

优点:

  • 易于使用:对于Gson,您必须使用Type将json数组解析为对象列表,在loganSquare中,它与LoganSquare.parseList()一样简单
  • 更快的:在任何设备(自己测试)中,它都会稍微快一些。
  • FasterER:在艺术设备中,它的速度差距真的很大--看看他们的基准
  • RetroFit友好:是的,它很适合改装。

缺点:

  • NO领域DB:到目前为止,我还无法使它与领域db一起运行(我还没有尽力)
  • 自定义类型适配器:到目前为止无法找到类型适配器或类似的东西,但我不确定。

参见他们的基准这里

下面是我糟糕的基准测试结果(这不是一个合适的基准测试,但它确实有问题):使用DalvikVM的模拟器连接5,4.2 jellybean

基准测试

解析模型

代码语言:javascript
运行
复制
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;
    }
}
票数 19
EN

Stack Overflow用户

发布于 2016-06-01 19:05:18

我使用Android6.0.1在我的Nexus 5设备上运行了LoganSquare基准项目,结果如下:

另外,在花了很短的时间处理库之后,下面是我的优缺点:

Pros

  1. 在解析和序列化方面都非常快。
  2. 小型图书馆
  3. 用于列表解析和序列化的简便方法
  4. 有用转换器
  5. 编译时错误而不是仅运行时

Cons

  1. 没有多少文档,也没有多少关于StackOverflow的问题和答案:)
  2. 支持的类型不多
  3. 只有Map集合中支持的字符串键

我编写了一个示例项目来查看LoganSquare和博客帖子是如何工作的,因此请查看那里以获得更多信息。

票数 4
EN

Stack Overflow用户

发布于 2019-02-20 11:20:56

response.body()它是字符串json响应

// MovieData它是一个模型类

代码语言:javascript
运行
复制
 MovieData movieData=LoganSquare.parse(response.body(),MovieData.class);

 Log.d("onResponse: ",movieData.getTitle());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30981565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档