Gson与FastJson解析性能分析
Test Jave Bean//**中国区域级别Json数据JavaBean*/
public class AreasBean {
private String level;
private String parent_id;
private String name;
private String postcode;
private String id;
private List<AreasBean> subarea;
...get set...
}
Test Layout<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!--解析Json字符串至对象-->
<LinearLayout
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
<Button
android:textAllCaps="false"
android:id="@+id/btn_testGsonParseJsonToObject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="testGsonParseJsonToObject" />
<Button
android:textAllCaps="false"
android:id="@+id/btn_testFastJsonParseJsonToObject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="testFastJsonParseJsonToObject" />
</LinearLayout> /<!--解析对象至Json字符串-->
<LinearLayout
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
<Button
android:textAllCaps="false"
android:id="@+id/btn_testGsonParSEObjectToJson"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="testGsonParSEObjectToJson" />
<Button
android:textAllCaps="false"
android:id="@+id/btn_testFastJsonParSEObjectToJson"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="testFastJsonParSEObjectToJson" />
</LinearLayout> </LinearLayout>
Test Activitypublic class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static String areasJson = "";
private static List<AreasBean> areasBeans1;
private static List<AreasBean> areasBeans2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
areasJson = getString(R.string.json);
findViewById(R.id.btn_testGsonParseJsonToObject).setOnClickListener(this);
findViewById(R.id.btn_testFastJsonParseJsonToObject).setOnClickListener(this);
findViewById(R.id.btn_testGsonParSEObjectToJson).setOnClickListener(this);
findViewById(R.id.btn_testFastJsonParSEObjectToJson).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
/**测试Gson解析Json成对象*/
case R.id.btn_testGsonParseJsonToObject:
testGsonParseJsonToObject();
break;
/**测试FastJson解析Json成对象*/
case R.id.btn_testFastJsonParseJsonToObject:
testFastJsonParseJsonToObject();
break;
/**测试Gson解析对象成Json*/
case R.id.btn_testGsonParSEObjectToJson:
testGsonParSEObjectToJson();
break;
/**测试FastJson解析对象成Json*/
case R.id.btn_testFastJsonParSEObjectToJson:
testFastJsonParSEObjectToJson();
break;
}
}
//** * 测试用 Gson 解析 Json 数据成对象 */
private static void testGsonParseJsonToObject() {
final long time0 = System.currentTimeMillis();
Gson gson = new Gson();
final Type type = new TypeToken<List<AreasBean>>() {}.getType();
for (int i = 0; i < 10; i++) {
areasBeans1 = gson.fromJson(areasJson,type);
}
Log.d("Test Json","testGsonParseJsonToObject time = " + (System.currentTimeMillis() - time0));
}
//** * 测试用 FastJson 解析 Json 数据成对象 */
private static void testFastJsonParseJsonToObject() {
final long time0 = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
areasBeans2 = JSON.parseArray(areasJson,AreasBean.class);
}
Log.d("Test Json","testFastJsonParseJsonToObject time = " + (System.currentTimeMillis() - time0));
}
//** * 测试用 Gson 将对象解析 Json 数据 */
private static void testGsonParSEObjectToJson() {
final long time0 = System.currentTimeMillis();
String jsonString = new Gson().toJson(areasBeans1);
Log.d("Test Json","testGsonParSEObjectToJson time = " + (System.currentTimeMillis() - time0));
}
//** * 测试用 FastJson 将对象解析 Json 数据 */
private static void testFastJsonParSEObjectToJson(){
final long time0 = System.currentTimeMillis();
String jsonString = JSON.toJSONString(areasBeans2);
Log.d("Test Json","testFastJsonParSEObjectToJson time = " + (System.currentTimeMillis() - time0));
}
}
Test Result Log
结论经过上面的简单测试,FastJson并没有说的那么Fast,不过可能笔者单方面测试可能结果并不准确,但这在我们开发中的代码并无不同,所以说,在开发能满足我们需求的而速度快的还是Google的Gson解析要快《个人见解,如果测试方面有什么问题或意见,欢迎大家留言一起讨论》 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |