一、Json:
首先回顾下JSON的基本概念,JSON是一种轻量级的数据交换格式。用于数据转换传输,通用与PHP、JAVA、C++、C#、Pyth等编程语言数据交换传输。
易于阅读和编写,同时也易于解析和生成。
基本结构:对象、数组。
二、Gson的简介和特点:
Gson是Google提供的用来在JAVA对象和JSON数据之间进行映射的JAVA类库。可将一根JSON字符串转成一个JAVA对象,或者反过来。
- 快速、高效
- 代码量少、简洁
- 面向对象
- 数据传递和解析方便
三、Fast-json简介和特点
1、Fastjson是一个性能很好的java语言实现的JSON解析器和生成器,来自于阿里巴巴的工程师开发。具有极快的性能,超越其他的Java Json Patser。
- 快速FAST(比其他任何基于Java的解析器和生成器更快
- 强大(支持普通的JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
- 零依赖
- 支持注解、支持全类型序列化。
2、基本用法:
- 定义实体类
- 根据需要可以将JSON生成单个实体或者列表实体集合
四、代码演示:
package com.jike.jsondemo; import java.util.ArrayList; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.ListView; import com.alibaba.fastjson.JSON; import com.android.volley.Response; import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import com.jike.jsondemo.adapter.BookListAdapter; import com.jike.jsondemo.bean.Book; /** * Gson 和 Fast-json 的实际应用案例 * * @author Administrator 图书列表 */ public class MainActivity extends Activity { private String url = "http://apis.juhe.cn/goodbook/catalog?key=a2ac7f8df926e8d5d7cc978ca0f1b12b&dtype=json"; private ListView lv; private BookListAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) this.findViewById(R.id.lv); getData(); } private void getData() { StringRequest request = new StringRequest(url, new Listener<String>() { @Override public void onResponse(String arg0) { Log.i("info", arg0); try { dealData(arg0); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { } }); Volley.newRequestQueue(getApplicationContext()).add(request); } private void dealData(String arg0) throws JSONException { /* * 使用GSON解析数据 Gson gson = new Gson(); Type listType = new TypeToken<ArrayList<Book>>() { }.getType(); JSONObject object = new JSONObject(arg0); ArrayList<Book> books = gson.fromJson(object.getString("result"),listType); adapter = new BookListAdapter(this, books); lv.setAdapter(adapter); */ /* * 使用FastJson解析数据 */ JSONObject object = new JSONObject(arg0); ArrayList<Book> books = (ArrayList<Book>) JSON.parseArray(object.getString("result"), Book.class); adapter = new BookListAdapter(this, books); lv.setAdapter(adapter); } }BookListAdapter.java:
package com.jike.jsondemo.adapter; import java.util.ArrayList; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.jike.jsondemo.R; import com.jike.jsondemo.bean.Book; public class BookListAdapter extends BaseAdapter { private Context c; private ArrayList<Book> list; public BookListAdapter(Context context, ArrayList<Book> books) { this.c = context; this.list = books; } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return list.get(arg0); } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = View.inflate(c, R.layout.item_list, null); holder = new ViewHolder(); holder.tv = (TextView) convertView.findViewById(R.id.tv); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } Book b = list.get(position); holder.tv.setText(b.getCatlog() + "\n" + b.getId()); return convertView; } class ViewHolder { TextView tv; } }Book.java:
package com.jike.jsondemo.bean; public class Book { private String id; private String catlog; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getCatlog() { return catlog; } public void setCatlog(String catlog) { this.catlog = catlog; } }
来源:https://www.cnblogs.com/xiangevan/p/10751732.html