我使用 Jackson 和DataBind库来解析json并将其映射到java对象。我也在其他项目中使用Gson,而不需要穿孔。
2月17日,LoganSquare库首次发布,承诺4到10倍的解析时间为Gson。
我知道它可能是一个主要的意见基础问题,所以尽可能技术和具体,并根据实际数据做出答案。
答案 0 :(得分:19)
很明显,如果您将应用程序发布到具有ART的设备,您将通过解析获得巨大的速度优势。
所以我将解释我迄今为止使用logansquare的经验。
专业人士:
LoganSquare.parseList()
NO REALM DB :到目前为止我无法使用Realm db运行(我还没努力)
自定义类型适配器:到目前为止找不到类型适配器或类似内容但我不确定。
查看他们的基准here
这是我糟糕的基准测试结果(它不是一个合适的基准,但它是一些东西): 模拟器nexus 5,带有DalvikVM,4.2 jellybean
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;
}
}
答案 1 :(得分:4)
我在使用Android 6.0.1的Nexus 5设备上运行了LoganSquare Benchmark项目,结果如下:
此外,在使用lib的短暂时间之后,这是我的优点和缺点:
<强>赞成强>
<强>缺点强>
我写了example project来了解LoganSquare的工作方式以及blog post,所以请查看更多信息。
答案 2 :(得分:1)
response.body()
是字符串json响应
// MovieData是模型类
MovieData movieData=LoganSquare.parse(response.body(),MovieData.class);
Log.d("onResponse: ",movieData.getTitle());
答案 3 :(得分:1)
该库自4年以上没有更新。
到目前为止,它的运行情况一直很好,但是据我所知,它在第5步之后将停止工作。