一.GSON 和 Fast-json 的特点和优势
1.JSON 的简介:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
- 用于数据转换传输,通用于PHP,Java,C++,C#,Python等编程语言数据交换传输。
- 易于人阅读和编写,同时也易于机器解析和生成。
- 基本结构:对象、数组。
2.Gson 的简介和特点:Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。
- 可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
- 快速、高效
- 代码量少、简洁
- 面向对象
- 数据传递和解析方便
- 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
- 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
- 零依赖(没有依赖其它任何类库除了JDK)
- 支持注解、支持全类型序列化
二.Gson 的基本用法
1.基本用法:
定义实体类
根据需要可以将JSON生成单个实体或列表实体集合
使用 Gson 解析 JsonObject
使用 Gson 解析 JsonArray
使用 Gson 将实体转为JSON数据
三.Fast-json 的基本用法
1.基本用法:
定义实体类
根据需要可以将JSON生成单个实体或列表实体集合
使用 FastJson 解析 JsonObject
使用 FastJson 解析 JsonArray
使用 FastJson 将实体转为JSON数据
四.Gson 和 Fast-json 的实际应用案例
package com.example.admin.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import org.json.JSONException;
import org.json.JSONObject;
import java.lang.reflect.Type;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
String mUrl;
RequestQueue mRequestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRequestQueue= Volley.newRequestQueue(this);
mUrl="https://api.douban.com/v2/book/1220562";
getdata(mUrl);
}
private void getdata(String url) {
StringRequest request=new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
parseJson(s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
});
mRequestQueue.add(request);
}
private void parseJson(String s) {
Gson gson=new Gson();
DataItem item=gson.fromJson(s,DataItem.class);
Log.i("fsg",item.getTitle());
JSONObject jsonObject= null;
try {
jsonObject = new JSONObject(s);
Type type=new TypeToken<ArrayList<DataItem>>(){}.getType();
ArrayList<DataItem> dataItems=gson.fromJson(jsonObject.getString("result"),type);
// ArrayList<DataItem> dataItems = (ArrayList<DataItem>) JSON.parseArray(
// jsonObject.getString("result"), DataItem.class);
} catch (JSONException e) {
e.printStackTrace();
}
}
}